首页 > 编程语言 > 详细

Collection Java集合小结

时间:2021-05-13 13:42:28      阅读:11      评论:0      收藏:0      [点我收藏+]

Java集合Collection

java中的容器有哪些?

技术分享图片

Collection和Collections的区别:

Collection是集合类的一个顶级接口,里面提供了一些集合操作统一的基本方法。

Collections是集合的工具类,提供了集合的一系列的静态方法,例如排序、集合之间的转化,线程安全等。

就想Array和Arrays,Executor和Executors一样,java中的工具类命名一般都在后面加s。

HashSet和HashMap的区别:

两者的实现不同,HashSet实现的是AbstractSet,而HashMap实现的是AbstractMap;

HashSet的底层就是HashMap的一个实例,只是将key-value变成了Object,里面的add()方法底层和HashMap的put()方法差不多。

HashMap和TreeMap的区别:

TreeMap底层采用的是红黑树结构,是一个有序的Map集合,底层采用的是红黑树结构,所以它的复杂度是O(Logn),性能要比HashMap差一些,所以通常我们会在需要排序的时候才使用到TreeMap。如果需要自定义比较,可以在构造函数中传入Comparator对象来自定义排序。

TreeMap和TreeSet的区别:

两者都是有序的;

区别:与HashSet和HashMap的区别一样

LinkedHashSet和HashSet的区别:

LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起来像是以插入顺 序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。

LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。

ArrayList和LinkedList的区别:

ArrayList底层使用的是动态数组,支持随机访问,所以ArrayList查询速度快,而插入删除操作慢;查询的时间复杂度是O(1);

LinkedList底层采用的是双向链表,不支持随机访问,所以查询速度慢,而插入删除速度快。查询的时间复杂度是O(n)

ArrayList 和Vector的区别:

底层都是数组实现的。

区别:

Vector是线程同步的,所以一般使用在多线程并发环境,但是实现同步需要很高的花费,所以性能要比ArrayList低,ArrayList是线程不安全的。

Vector和ArrayList的扩容机制不一样,Vector是100%的增长,而ArrayList是增长50%,所以Vector用在一些数据量大的场合性能比ArrayList好。

Array和ArrayList之间的互相转换

Array->ArrayList:Arrays.asList(),使用工具类Arrays的asList()方法;

ArrayList->Array:ArrayList.toArray(),使用ArrayList的toArray()方法;

总结:

线程安全的集合有哪些:

Vector、HashTable、ConcurrentHashMap、statck堆栈类,先进先出、枚举enume。

Collection Java集合小结

原文:https://www.cnblogs.com/hooong/p/14763623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!