常用集合
集合
一、List/Set/Map 区别
·list和Set是存储单列数据的集合,而Map是存储键值对。
·list存储的数据是有序的,且可以重复。set存储数据是无序的,不可重复。Map存储的键不可重复,但值可以重复。
二、集合
1、List
a.实现类
ArrayList、LinkedList、voctor
b.区别
ArrayList 底层为数组,查询时根据数组下标去找到对应的数据,但增删时,效率低。
LinkedList 底层是链表,查询时要通过一个个节点去查找,增删时,效率高,只要断开对应的节点,插入或删除就行
Voctor 底层是数组,线程安全,增删慢,查询慢。
c.补充
ArrayList 内部是以数组形式来保存集合中的元素,因此随机访问时性能较好。
LinkedList 内部是以链表形式来保存集合中的元素,因此随机访问时性能较差,但是插入、删除元素是性能比较出色(只需要改变指针的指向)
2、Map
a.实现类
HashMap、LinkedHashMap、HashTable
b.区别
HashMap 非线程安全,但效率高,允许null
key的值是唯一的,允许value为null。 利用这种特性,可以很容易做到去重的效果
代码有些地方不用理会什么意思,只要知道大体上能用这个特性来方便查到到重复的数据。
int index = 0; for (int i = 0; i < rows.length; i++) { String[] arr = StringUtils.splitByWholeSeparatorPreserveAllTokens( //这里不用理会是什么意思 rows[i], "\t"); bagNoMap.put(arr[0], null); //这里的arr[0]是bagNo index++; if (bagNoMap.size() != index) { returnBuffer.append("<br/> No.").append(i + 1) .append(" row,save fail!<br/> Reason of failure:") .append("Uploaded bag number is duplicated!"); error.setMsg(error.getMsg() + returnBuffer.toString()); index--; // 判断下一次重复 continue; } }
HashTable 线程安全,效率低,不允许Null
linkedHashMap为HashMap的子类,保存着插入的顺序
3、Set
a.实现类
HashSet、LinkedHashSet
b.区别
HashSet 底层是hashMap,不允许重复值
LinkedHsahSet 接口LinkedHashMap,底层是LinkedHashMap
三、后记
1、详细的这里就不多说了
2、转发请注明源地址