Java集合分为value,key------value(conllection map)两大部分
1.储存值的(value)有list和set
1.1 list是有序的,可以重复的。list又分为ArrayList和LinkedList
1.1.1 ArrayList:底层源码中用的是数组,根据数组的特性,ArrayList对于查询操作效率高,对于插入/删除操作效率低 (数组在内存中是连续的,插入或删除时需要移动内存,但查找可以根据索引查找)
1.1.2 LinkedList:底层源码中用的是链表,根据链表的特性,LinkedList对于插入/删除操作效率高,对于查询操作效率低 (链表在内存中是不连续的,插入或删除时不需要移动内存,但查询时需要从第一个开始寻找)
因此ArrayList用于查询比较多插入或删除较少的情况下,LinkedList用于查询比较少插入或删除较多的情况下,一般用 ArrayList情况比较多。
1.2 set是无序的,不可重复的。不可重复根据equals和hascode判断,即用set存储值时必须从写equals和hascode方法。
2.储存key------value的是map
map分为hashmap和hastable
hashmap允许key或value为null,而hastable不可以的
hashmap是线程不安全的,效率较高
hashtable是线程安全的,效率较低
如果想线程安全并且效率高需要使用ConcurrentHashMap(jdk1.5后线程并发库中提供的),就是把整个map分成n个( 类似hashtable),每个map都是线程安全的,且可以实现并发,并且效率提高n呗,默认n=16.
java中的集合的区别
最新推荐文章于 2024-04-27 22:14:14 发布