zoukankan      html  css  js  c++  java
  • Java集合技巧

    集合的一些技巧:
     
    需要唯一吗?
    需要:Set
    需要制定顺序: 
    需要: TreeSet
    不需要:HashSet
    但是想要一个和存储一致的顺序(有序):LinkedHashSet
    不需要:List
    需要频繁增删吗?
    需要:LinkedList
    不需要:ArrayList
     
    如何记录每一个容器的结构和所属体系呢?
     
    看名字!
     
     
    List
    |--ArrayList
    |--LinkedList
     
    Set
    |--HashSet
    |--TreeSet
     
    后缀名就是该集合所属的体系。
     
    前缀名就是该集合的数据结构。
     
    看到array:就要想到数组,就要想到查询快,有角标.
    看到link:就要想到链表,就要想到增删快,就要想要 add get remove+frist last的方法 
    看到hash:就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashcode方法和equals方法。 
    看到tree:就要想到二叉树,就要想要排序,就要想到两个接口Comparable,Comparator 。
     
    而且通常这些常用的集合容器都是不同步的。 
     
     
    ============================================
     
    Map:一次添加一对元素。Collection 一次添加一个元素。
    Map也称为双列集合,Collection集合称为单列集合。
    其实map集合中存储的就是键值对。 
    map集合中必须保证键的唯一性。 
     
     
    常用方法:
    1,添加。
    value put(key,value):返回前一个和key关联的值,如果没有返回null.
     
    2,删除。
    void  clear():清空map集合。
    value remove(key):根据指定的key翻出这个键值对。 
     
    3,判断。
    boolean containsKey(key):
    boolean containsValue(value):
    boolean isEmpty();
     
    4,获取。 
    value get(key):通过键获取值,如果没有该键返回null。
    当然可以通过返回null,来判断是否包含指定键。 
    int size(): 获取键值对的个数。 
     
    Map常用的子类:
    |--Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。
    |--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。 
    |--HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
    |--TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。 
  • 相关阅读:
    珍珠项链——容斥的应用
    协程库中 WaitGroup / CountDownLatch 实现
    简单C++线程池
    switch 比 if/else 效率更高?
    [LeetCode 264.] 丑数 II
    [LeetCode 229.] 求众数 II
    [NC41] 最长无重复子数组
    [NC105] 二分查找-II
    高楼扔鸡蛋
    C++ 编译期计算
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8309729.html
Copyright © 2011-2022 走看看