zoukankan      html  css  js  c++  java
  • 常用集合

    集合

    一、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], "	");
        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、转发请注明源地址

  • 相关阅读:
    RMQ
    LCA 笔记
    LUCAS 定理
    topcoder 643 DIV2
    BZOJ 1071组队
    Codeforces Round #283 (Div. 2)
    topcoder 642
    Codeforces Round #278 (Div. 2)
    树链剖分
    Codeforces Round #277 (Div. 2)
  • 原文地址:https://www.cnblogs.com/lrj1009IRET/p/9248716.html
Copyright © 2011-2022 走看看