概述
Java集合有哪些?区别是什么?使用场景?
今天我们简单聊一聊Java中的集合,Java中的集合有List,Set,Map。List和Set有着很多的相似之处,都是存储单例数据的集合,父接口都是Collection。List是有序的值允许重复,每次插入数据,不是把对象本身存储到集合中,而是在集合中用一个索引变量指向这个对象。Set是无序的不允许有重复的值出现。Map集合是存储双列数据的集合,存储的数据是无序的,键不可以重复,值可以重复。接下来详细的说说LIst,Set,Map。
1. List集合
-
ArrayList:
底层数据结构是数组,查询快,增删慢,查询是根据数组下标直接查询速度快,增删需要移动后边的元素和扩容,速度慢。线程不安全,效率高 -
LinkedList:
底层数据结构是链表,查询慢,增删快,查询需要遍历数组,速度慢,增删只需要增加或删除一个链接即可,速度快,线程不安全,效率高 -
Vector:
底层数据结构是数组,查询快,增删慢,线程安全,效率低
2.Set集合
-
Hashset:
底层数据结构是哈希表,是根据哈希算法来存取对象的,存取速度快,当Hashset中元素个数超过数组大小(默认值位0.75)时,会进行近似两倍的扩容,哈希表依赖两个方法hashcode()和equals()方法,方法的执行顺序,判断hashcode值是否相同,是:执行equals方法看其返回值,true:说明元素重复不添加,false:直接添加到集合,hashcode值不相同直接添加到集合。 -
LinkedHashset:
底层数据结构是链表和哈希表,由链表保证元素有序,由哈希表保证元素的唯一 -
Treeset
底层数据结构是红黑树(唯一,有序)由自然排序和比较器排序保证有序,根据返回值是否是0判断元素是否唯一
3.Map集合
-
HashMap:
HashMap是基于散列表实现的,其插入和查询的<k,v>的开销是固定的,可以通过构造器设置容量和负载因子来调整容器的性能,线程不安全,效率低 -
TreeSet:
基于红黑树实现,查看<k,v>时,它们会被排序,TreeMap是唯一带有subMap()方法的Map,subMap()方法可以返回一个子树。 -
LInkedHashMap:
类似于HashMap,但是迭代遍历它时,取得<K,V>的顺序是其插入次序,或者是最近最少使用(LRU)的次序。
4.Map取键值的两种方法
- 第一个,使用keySet方法,获得key的set,然后遍历set,就可以获得所有的value
- 第二个,使用entrySet方法,获得map中的所有键值对的一个视图,遍历就可获得所有的key、value
最后
以上就是怡然酒窝为你收集整理的Java集合有哪些?区别是什么?使用场景的全部内容,希望文章能够帮你解决Java集合有哪些?区别是什么?使用场景所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复