常用集合

集合

一、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、转发请注明源地址

posted @ 2018-06-30 21:33  弹琴不谈情  阅读(197)  评论(0编辑  收藏  举报