JAVA之集合

来源:互联网 发布:通科商务营销软件 编辑:程序博客网 时间:2024/06/02 04:07
        数组用于存放固定数量的同种数据类型的值或对象,数组的优点是可以通过下标快速访问任意元素,缺点是由于长度固定,所以不能动态地扩容,集合框架便由此产生。
一、java.util.Collection接口:
        1、Set接口:不包含重复元素的集合。
              1>SortedSet接口:有序集合
              2>AbstractSet类:
                      1)HashSet类:用哈希表实现的Set,不是同步的,即不是线程安全的。
                              ①LinkedHashSet类:基于哈希表和链表的Set,不是同步的,即不是线程安全的。
                      2)TreeSet类:基于TreeMap的Set,对元素进行自然排序,不是同步的,即不是线程安全的。
                             主要方法有:
                              ①ceiling(E e):返回此set中大于等于给定元素的最小元素;如果不存在这样的元素则返回null。
                              ②floor(E e):返回此set中小于等于给定元素的最大元素;如果不存在这样的元素则返回null。
                              ③higher(E e):返回此set中严格大于给定元素的最小元素;如果不存在这样的元素则返回null。
                              ④lower(E e):返回此set中严格小于给定元素的最大元素;如果不存在这样的元素则返回null。
        2、Queue接口:“先进先出”或“后进先出”队列的集合,子接口:Deque接口,双端队列的集合
          Queue接口主要方法有:
              ①boolean add():将指定的元素插入此队列尾,成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
              ②boolean offer():将指定的元素插入此队列尾,成功时返回true;否则返回false。
              ③E remove():获取并移除此队列的头。此队列为空时将抛出NoSuchElementException 。 
              ④E poll():获取并移除此队列的头。此队列为空时返回null 。 
              ⑤E element():获取但不移除此队列的头。此队列为空时将抛出NoSuchElementException 。 
              ⑥E peek():获取但不移除此队列的头。此队列为空时返回null
        3、List接口:有序的集合
              1>AbstractList类:
                      1)ArrayList类:实现动态数组的数据结构。不需要在定义List时指定数组长度,而是可以在使用过程中动态扩展该数组的长度。允许包含null元素在内,ArrayList可通过下标查找对应元素,而LinkedList只能通过前一个元素才能查找到后一个元素,因此ArrayList的查询效率要比LinkedList要高。ArrayList不是同步的,即不是线程安全的。
                      2)LinkedList类:实现链表的数据结构,所以移动和删除元素的效率要比ArrayList要高。同时实现了Queue和Deque接口。LinkedList不是同步的,即不是线程安全的。
                      3)Vector类:可根据需要增大或缩小的List,是同步的,即是线程安全的。
                      4)Stack类:“后进先出”的List,即栈,继承自Vector,所以也是线程安全的。
                             主要方法有:
                              ①E push(E item):把项压入堆栈顶部并返回。
                              ②E pop():移除堆栈顶部的对象并返回。
                              ③boolean empty():测试堆栈是否为空。当且仅当堆栈中不含任何项时返回true,否则返回 false。
二、java.util.Map接口:
      1、SortedMap接口:键值是有序的Map。
        2、AbstractMap类:
              1>TreeMap类:键值是有序的Map,不是同步的,即不是线程安全的。
              2>HashMap类:基于哈希表的Map,不保证顺序,不是同步的,即不是线程安全的。但其子类LinkedHashMap是有序的。
                     ①LinkedHashMap类:基于链表和哈希表的Map,不是同步的,即不是线程安全的
三、java.util.Dictionary类:任何可将键映射到相应值的类(如 Hashtable)的抽象父类,任何非null对象都可以用作键或值。
      1、Hashtable类:基于哈基表的Map,键和值不能是null,是同步的,即是线程安全的,但是是无序的。
              1>Properties类:表示一个持久的属性集。可保存在流中或从流中加载。每个键及其对应值都是一个String类型。
四、java.util.Collections类:此类非继承来的方法都是static,即调用时使用Collections.调用即可,可以理解为是Collection集合的工具类。
        1、boolean disjoint(Collection c1,Collection c2):如果两个指定collection中没有相同的元素,则返回true。
        2、int frequency(Collection c,Object o):返回指定collection中等于指定对象的元素数。
        3、List nCopies(int n,T o):返回由指定对象的n个副本组成的不可变列表。
        4、Collection synchronizedCollection(Collection c):返回指定线程安全的collection,在返回的collection上进行迭代时,用户必须手工在返回的collection上进行同步。
        5、List synchronizedList(List list):返回指定线程安全的List,在返回的List上进行迭代时,用户必须手工在返回的List上进行同步。
        6、Map synchronizedMap(Map map):返回指定线程安全的Map,在返回的Map上进行迭代时,用户必须手工在返回的Map上进行同步。
        7、Set synchronizedSet(Set set):返回指定线程安全的Set,在返回的Set上进行迭代时,用户必须手工在返回的Set上进行同步。
        8、SortedMap synchronizedSortedMap(SortedMap sortedMap):返回指定线程安全的SortedMap,在返回的SortedMap上进行迭代时,用户必须手工在返回的SortedMap上进行同步。
        9、SortedSet synchronizedSortedSet(SortedSet sortedSet):返回指定线程安全的SortedSet,在返回的SortedSet上进行迭代时,用户必须手工在返回的SortedSet上进行同步。

参考:http://blog.csdn.net/qq_27489007/article/details/52027121

0 0
原创粉丝点击