总结collection类

举报
小鲍侃java 发表于 2021/10/23 00:34:35 2021/10/23
2.5k+ 0 0
【摘要】 ​ 1.collection collect为存储数据的集合类的顶级接口。所以不能实例化,只能实现collection,长度可变,集合为引用类型。 list和set是collection的实现类 ...

1.collection

collect为存储数据的集合类的顶级接口。所以不能实例化,只能实现collection,长度可变,集合为引用类型。

list和set是collection的实现类

2.list

list有序,可以重复,可以为空,实现类有ArrayList、LinkedList 和 Vector。

  1. linklist以链表的方式存储增删更快,线程不安全,效率高。
  2. arraylist以数组的方式存储,查询更快 ,效率高,线程不安全。
  3. vector线程安全,效率低,增长率为100%,数据量较大的数据

3.set

不可以重复,无序,treeset,hashset,linkhashset为set的实现类。

  1. hashset 数据结构是哈希表,按照hash值排序,不存在重复值,通过hashcode和equals判断。线程安全,存取快。
    元素的哈希值是通过元素的hashcode方法来获取的, HashSet首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals方法 如果 equls结果为true ,HashSet就视为同一个元素。如果equals 为false就不是同一个元素。
    哈希值相同equals为false的元素是怎么存储呢,就是在同样的哈希值下顺延(可以认为哈希值相同的元素放在一个哈希桶中)。也就是哈希一样的存一列。

  2. treeset 可以自然排序。不可重复。

  3. LinkedHashSet 会保存插入的顺序

4.map

map是map的接口的实现类,为键值对的,包括hashmap,treemap,hashtable,linkedtreetable。

  1. hashmap 且键唯一,键 值 可为空,线程不同步。
  2. treeMap 可以对集合中的键进行排序
  3. LinkedHashMap 保存了记录的插入顺序
  4. hashtable key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

5.遍历map

iterator it = map.entry rset.interator()
while(it.hasnext()){
entry k = it..next()
syso(k.getkey(),k.getvalue)
}

  
 

6.线程安全问题

linklist arraylist hashset linkhashset线程不安全
vector hashtable为线程安全
stringbuffer为线程不安全 stringbuild为线程安全

  
 

7.总结

  1. ArrayXxx:底层数据结构是数组,查询快,增删慢
  2. LinkedXxx:底层数据结构是链表,查询慢,增删快
  3. HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
  4. TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/120901593

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。