zoukankan      html  css  js  c++  java
  • [转载]java集合类总结

     Java集合类主要负责保存、盛装数据,因此集合类也称容器类。
      在认识collection之前,需要分清三个概念:

     1. collection集合,用来表示任何一种数据结构; 
     2. Collection集合接口,指的是java.util.Collection接口,是Set、List和Queue接口的超类接口  
    3. Collections集合工具类,指的是java.util.Collections类。

      这里说的集合指的是小写的collection,集合有4中基本形式,其中前三类的父接口指Collection。
       1.Set关注事物的唯一性,
    代表无序、不可重复的集合; 
       2.List关注事物的索引列表,代表有序、可重复的集合;
       3.Queue关注事物被处理时的顺序,
    代表队列集合; 
       4.
    Map关注事物的映射和键值的唯一性,代表具有映射关系的集合;
      Java集合类主要由两个接口派生:Collection和Map,是集合框架的根接口。下面是其接口、接口和实现类的继承树。

    [转载]java集合类总结

      一、Collection 接口

            Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()、remove()、contains() 、size() 、iterator() 等。

    add(E e) 将指定对象添加到集合中
    remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false
    contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
    size() 返回集合中存放的对象的个数。返回值为int
    clear() 移除该集合中的所有对象,清空该集合。
    iterator() 返回一个包含所有对象的iterator对象,用来循环遍历
    toArray() 返回一个包含所有对象的数组,类型是Object
    toArray(T[] t) 返回一个包含所有对象的指定类型的数组

    1、List接口

    List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。

    ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。

    LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。

    Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用

    2、Set接口

    Set关心唯一性,它不允许重复。

    HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。

    LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。

    TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)

    3、Queue接口

    Queue用于保存将要执行的任务列表。

    LinkedList 同样实现了Queue接口,可以实现先进先出的队列。

    PriorityQueue 用来创建自然排序的优先级队列。

    二、Map接口

    Map接口的常用方法如下表所示:

    put(K key, V value) 向集合中添加指定的键值对
    putAll(Map <? extends K,? extends V> t) 把一个Map中的所有键值对添加到该集合
    containsKey(Object key) 如果包含该键,则返回true
    containsValue(Object value) 如果包含该值,则返回true
    get(Object key) 根据键,返回相应的值对象
    keySet() 将该集合中的所有键以Set集合形式返回
    values() 将该集合中所有的值以Collection形式返回
    remove(Object key) 如果存在指定的键,则移除该键值对,返回键所对应的值,如果不存在则返回null
    clear() 移除Map中的所有键值对,或者说就是清空集合
    isEmpty() 查看Map中是否存在键值对
    size() 查看集合中包含键值对的个数,返回int类型

    因为Map中的键必须是唯一的,所以虽然键可以是null,只能由一个键是null,而Map中的值可没有这种限制,值为null的情况经常出现, 因此get(Object key)方法返回null,有两种情况一种是确实不存在该键值对,二是该键对应的值对象为null。为了确保某Map中确实有某个键,应该使用的方法是 containsKey(Object key) 。
      1.Map接口

    Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。

    HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。

    Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

    LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。

    TreeMap 当需要键值对,并关心元素的自然排序时可采用它。

  • 相关阅读:
    Java读书笔记
    b_aw_旅游计划(树的中心变形)
    b_lc_秋叶收集器(分类讨论dp+滚动数组优化)
    b_lg_涂色(从小区间做起,讨论s[l]和s[r]的关系)
    c_lc_早餐组合(排序+双指针)
    c_aw_鱼塘钓鱼(大根堆)
    b_pat_栈(2*multiset+stack)
    c_pat_推荐系统(set模拟)
    b_lg_时态同步(后序遍历统计每棵子树的最大高度)
    b_lc_统计不开心的朋友(预处理+模拟)
  • 原文地址:https://www.cnblogs.com/suifengbingzhu/p/2648272.html
Copyright © 2011-2022 走看看