此文有个人编写,纯手打,若有诸多不正确之处,请留言纠正,感激不尽,或者发送邮件到1014299258@qq.com,拜谢
java中集合分三类。list,set,map
list和set都实现了接口connection
list主要使用的有arraylist和linkedlist,还有一个veator为线程安全,但是效率不高,使用较少。arraylist底层由数组实现,实则是一个自动扩充大小的object型数组,自动扩充由判断语句实现,若数组满则新建一个新的数组,新数组的大小等于((oldList.length * 3)/ 2 + 1),然后将新数组赋给旧对象数组,达到扩充的效果,在添加数据的时候效率较linkedlist高,linkedlist底层由双向链表实现,在进行添加操作时,需要进行指针修改,故而效率没有arraylist高,但是在对集合进行删除时,linkedlist只需要删除相应节点即可,而arraylist最坏情况需要更改整个数组,所以删除效率较arraylist高。另外list可以插入重复值,但不能插入空值。
set主要使用的是hashset,由于每一个元素都对应一个哈希值,所以set集合内的元素不能重复,但可有且仅可有一个空值,同时set集合中的元素不是有序的,就是说遍历输出时的顺序可能和插入顺序不同(基本不会相同).
map集合是键值对类型集合,即map<key,value>,每一个key都与一个value对应,它也是无序的
hashmap是其中常用的一种集合,hashmap中允许key与value为空,但是key值不能重复,如果向集合中插入重复的key则会覆盖以前的键值对,不同的key可以有相同的value值,最后map也是非线程同步的。
转载于:https://blog.51cto.com/ministone/1562772