zoukankan      html  css  js  c++  java
  • JAVA集合框架

     
     
    参考:《疯狂JAVA讲义》
     
    Map接口(字典/关联数组) Collection接口
    Object put(Object key, Object value)
    Object remove(Object key)

    int size()
    boolean isEmpty()
    boolean containsKey(Object key)
    boolean containsValue(Object value)

    void putAll(Map t)
    void clear()

    Set keySet()  //keys
    Set entrySet()  //Map.Entrys
    Collection values()  //values
    boolean add(Object o)
    boolean remove(Object o)

    int size()
    boolean isEmpty() 
    boolean contains(Object o) 
    Iterator iterator()
    Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。

    boolean containsAll(Collection c)
    boolean addAll(Collection c)
    void clear()
    void removeAll(Collection c)
    void retainAll(Collection c) 

    Object[] toArray() 
    Object[] toArray(Object[] a) 

    Map接口
    (key-value对)
    key为Set
    (遍历:先获取key集合,再通过key遍历获取value)
    Set接口
    (无序,不重复,方法函数与Collection一样):

    Queue接口
    (先进先出):

    void add(Object)
    Object poll()
    Object peek()

    List接口
    (有序,可重复,添加了面向位置的操作):

    int indexOf(Object o)
    int lastIndexOf(Object o)
    Object set(int index, Object element)
    void add(int index, Object element)
    boolean addAll(int index, Collection c)
    Object remove(int index)

    ListItertor:
    对Iterator增加支持添加或更改底层集合中的元素、支持双向访
    void add(Object o)
    void set(Object o)
    boolean hasPrevious()
    Object previous()
    int previousIndex()
    int nextIndex()
    HashMap
    线程不安全
    key只允许有一个为null,value可有多个为null
    (比较value相等:equals方法返回true ;比较key相等:与HashSet同
    (不能保证迭代输出顺序可与插入顺序一致)

    LinkedHashMap
    (与LinkedHashSet类似


    其他实现于Map的类:
    WeakHashMap
    (key为弱引用)

    IdentityHashMap
    HashTable
    旧类;线程安全
    key和value均不可为null
    (比较value相等:equals方法返回true ;比较key相等:与HashSet同


    Properties
    (key value 都是String):
    getProperty(String)
    setProperty(String)
    load(InputStream)
    store(OutputStream)
    HashSet
    hash算法决定位置
    (无序,不重复,线程不安全,元素允许null
    (判重复/相等:Object的hashcode与equals方法均返回true equal && hashcode
    不能保证迭代输出顺序可与插入顺序一致

    LinkedHashSet
    (与上其他同)
    (使用双向链表维护:保证迭代输出的顺序与插入的顺序保持一致

    PriorityQueue
    (不是按加入队列顺序排,而是按队列元素大小排,先出队最小的;违反了FIFO)
    ArrayList
    线程不安全
    capacity属性默认10动态再分配的Object[]数组)
    void ensureCapacity(int minCapacity)
    void trimToSize()

    Vector
    旧类;线程安全
    capacity属性默认10动态再分配的Object[]数组)



    Stack
    (先进先出)
    Object peek()
    Object pop()
    void push(Object)
    SortedMap接口

    TreeMap 
    (与TreeSet类似
    SortedSet接口

    TreeSet
    红黑树算法决定位置
    有序,不重复)
    (判重复/相等:compareTo/compare返回0equals方法返回true):
    (默认自然排序定制排序:TreeSet中自定义非自然顺序对象必须实现Compartor compareTo(Object)

    TreeSet()
    TreeSet(Collection c)
    TreeSet(Comparator c)
    Comparator comparator()
    Object first()
    Object last()
    Object lower(Object o)
    Object higher(Object o)
    等与顺序有关的set操作

    SortedSet subSet()
    SortedSet headSet()
    SortedSet tailSet()

    LinkedList
    双向链表实现)
    (实现Deque List接口添加了一些处理列表两端元素的方法
    (可当作List stack queue使用
    EnumMap EnumSet
    (无序,枚举值,元素非null)
         
    Map.Entry接口
    (key-value对的封装)

    Object getKey()
    Object getValue()
    Object setValue(Object value)
    Iterator 接口
    (forEach内部由Iterator实现
    boolean hasNext()
    Object next()
    void remove()

    Enumeration
    (I terator 对应的 旧类)


    Comparable接口 & Comparator接口
    Comparable接口自然顺序):
    (实现了的类:
    String, Double, BigInteger等
    int compareTo(Object o)

    Comparator接口
    int compare(Object o1, Object o2):
    如果o1位于o2的前面,则返回负值;如果在排序顺序中认为o1和o2是相同的,返回0;如果o1位于o2的后面,则返回正值 


    注:
    同一框中为类继承或接口实现关系;
    表格自上而下大体为接口实现与拓展关系;
    最后一行:相关类
     
    • 不用泛型:强制类型转换为Object
     
    • 关于hash性能选项:

     
    • Set比较
     
    • List比较
     
    • Map比较
     

    • Collections集合类
    (取代使用HashTable、Vector旧类的线程安全方法):
    static方法:
    排序:
    查找/替换:
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    java类加载全过程
    pyAggr3g470r 3.6 发布,新闻聚合器
    fourinone分布式协调设计解析
    修改openJDK7的javac,使得java支持单引号字符串
    SabreDAV 1.8.0 发布,集成 WebDAV 系统
    openSUSE 12.3 里程碑 1 发布
    GroupOffice 4.0.123 发布
    nagios总结与基本配置模板
    Zorin OS 6.1 发布,基于Ubuntu的Linux
    Ehcache 2.6.2 发布,Java 缓存框架
  • 原文地址:https://www.cnblogs.com/Doing-what-I-love/p/5530479.html
Copyright © 2011-2022 走看看