Java Collections

1 什么是Java Collections

Java Collections类提供了对集合进行操作或返回集合的静态方法。它继承了Object类。

关于Java Collections类的核心要点是:

  • Java Collection类支持对集合进行操作的多态算法。
  • 如果提供给它们的集合或类对象为null,则Java Collection类将引发NullPointerException异常。

2 Java Collections的语法

public class Collections extends Object  

3 Java Collections类的方法

修饰符 方法 描述
static <T> boolean addAll() 用于将所有指定的元素添加到指定的集合中。
static <T> Queue<T> asLifoQueue() 返回一个双端队列的视图作为后进先出(LIFO)队列。
static <T> int binarySearch() 在列表中搜索指定的对象,并返回它们在已排序列表中的位置。
static <E> Collection<E> checkedCollection() 用于返回指定集合的​​动态类型安全视图。
static <E> List<E> checkedList() 用于返回指定列表的动态类型安全视图。
static <K,V> Map<K,V> checkedMap() 用于返回指定映射的动态类型安全视图。
static <K,V> NavigableMap<K,V> checkedNavigableMap() 用于返回指定可导航地图的动态类型安全视图。
static <E> NavigableSet<E> checkedNavigableSet() 用于返回指定导航集的动态类型安全视图。
static <E> Queue<E> checkedQueue() 用于返回指定队列的动态类型安全视图。
static <E> Set<E> checkedSet() 用于返回指定集合的​​动态类型安全视图。
static <K,V> SortedMap<K,V> checkedSortedMap() 用于返回指定排序映射的动态类型安全视图。
static <E> SortedSet<E> checkedSortedSet() 用于返回指定排序集的动态类型安全视图。
static <T> void copy() 用于将所有元素从一个列表复制到另一列表。
static boolean disjoint() 如果两个指定的集合没有相同的元素,则返回true。
static <T> Enumeration<T> emptyEnumeration() 用于获取没有元素的枚举。
static <T> Iterator<T> emptyIterator() 用于获取没有元素的Iterator。
static <T> List<T> emptyList() 用于获取没有元素的列表。
static <T> ListIterator<T> emptyListIterator() 用于获取没有元素的列表迭代器。
static <K,V> Map<K,V> emptyMap() 返回一个不变的空Map。
static <K,V> NavigableMap<K,V> emptyNavigableMap() 返回一个不变的空的NavigableMap。
static <E> NavigableSet<E> emptyNavigableSet() 用于获取本质上是不变的空NavigableSet。
static <T> Set<T> emptySet() 用于获取没有元素的集合。
static <K,V> SortedMap<K,V> emptySortedMap() 返回一个不可变的SortedMap。
static <E> SortedSet<E> emptySortedSet() 用于获取没有元素的SortedSet。
static <T> Enumeration<T> enumeration() 用于获取指定集合的​​枚举。
static <T> void fill() 用于用指定的元素替换指定列表中的所有元素。
static int frequency() 用于获取指定集合中等于指定对象的元素数。
static int indexOfSubList() 用于获取指定源列表中指定目标列表首次出现的起始位置。如果在指定列表中没有出现这种情况,则返回-1。
static int lastIndexOfSubList() 用于获取指定源列表中指定目标列表最后一次出现的起始位置。如果在指定列表中没有出现这种情况,则返回-1。
static <T> ArrayList<T> list() 用于获取一个数组列表,该列表包含按枚举返回顺序的指定枚举返回的元素。
static <T extends Object & Comparable<? super T>> T max() 根据其元素的自然顺序,它用于获取给定集合的最大值。
static <T extends Object & Comparable<? super T>> T min() 根据其元素的自然顺序,它用于获取给定集合的最小值。
static <T> List<T> nCopies() 用于获取由指定对象的n个副本组成的不可变列表。
static <E> Set<E> newSetFromMap() 用于返回由指定映射支持的集合。
static <T> boolean replaceAll() 用于将列表中一个指定值的所有出现替换为另一指定值。
static void reverse() 用于反转指定列表中元素的顺序。
static <T> Comparator<T> reverseOrder() 用于获取比较器,该比较器对实现Comparable接口的对象集合施加自然顺序的逆序。
static void rotate() 用于将指定列表中的元素旋转给定距离。
static void shuffle() 用于使用默认随机性对指定的列表元素进行随机重新排序。
static <T> Set<T> singleton() 用于获取仅包含指定对象的不可变集。
static <T> List<T> singletonList() 用于获取仅包含指定对象的不可变列表。
static <K,V> Map<K,V> singletonMap() 用于获取不可变的映射,仅将指定的键映射到指定的值。
static <T extends Comparable<? super T>>void sort() 用于按升序对指定集合列表中的元素进行排序。
static void swap() 用于交换指定列表中指定位置的元素。
static <T> Collection<T> synchronizedCollection() 用于获取指定集合支持的同步(线程安全)集合。
static <T> List<T> synchronizedList() 用于获取由指定列表支持的同步(线程安全)集合。
static <K,V> Map<K,V> synchronizedMap() 用于获取由指定映射支持的同步(线程安全)映射。
static <K,V> NavigableMap<K,V> synchronizedNavigableMap() 用于获取由指定的可导航图支持的同步(线程安全)NavigableMap。
static <T> NavigableSet<T> synchronizedNavigableSet() 用于获取由指定的导航集支持的同步(线程安全)NavigableSet。
static <T> Set<T> synchronizedSet() 用于获取由指定集支持的同步(线程安全)集。
static <K,V> SortedMap<K,V> synchronizedSortedMap() 用于获取由指定的排序映射表支持的同步(线程安全)SortedMap。
static <T> SortedSet<T> synchronizedSortedSet() 用于获取由指定排序集支持的同步(线程安全)SortedSet。
static <T> Collection<T> unmodifiableCollection() 用于获取指定集合的​​不可修改视图。
static <T> List<T> unmodifiableList() 用于获取指定列表的不可修改视图。
static <K,V> Map<K,V> unmodifiableMap() 用于获取指定地图的不可修改视图。
static <K,V> NavigableMap<K,V> unmodifiableNavigableMap() 用于获取指定的NavigableMap的不可修改视图。
static <T> NavigableSet<T> unmodifiableNavigableSet() 用于获取指定NavigableSet的不可修改视图。
static <T> Set<T> unmodifiableSet() 用于获取指定集的不可修改视图。
static <K,V> SortedMap<K,V> unmodifiableSortedMap() 用于获取指定排序映射的不可修改视图。
static <T> SortedSet<T> unmodifiableSortedSet() 用于获取指定排序集的不可修改视图。

4 Java Collections的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections的例子
 */
import java.util.*;

public class Demo {

    public static void main(String a[]){
        List<String> list = new ArrayList<String>();
        list.add("C");
        list.add("Core Java");
        list.add("Servlet");
        System.out.println("初始化集合:"+list);
        Collections.addAll(list, "Spring","JSP");
        System.out.println("往集合添加元素后:"+list);
        String[] strArr = {"C#", ".Net"};
        Collections.addAll(list, strArr);
        System.out.println("往集合添加数组后:"+list);
    }
}

输出结果为:

初始化集合:[C, Core Java, Servlet]
往集合添加元素后:[C, Core Java, Servlet, Spring, JSP]
往集合添加数组后:[C, Core Java, Servlet, Spring, JSP, C#, .Net]

5 Java Collections的例子:max()

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections的例子
 */
import java.util.*;

public class Demo {

    public static void main(String a[]){
        List<Integer> list = new ArrayList<Integer>();
        list.add(46);
        list.add(67);
        list.add(24);
        list.add(16);
        list.add(8);
        list.add(12);
        System.out.println("集合的最大值是: "+Collections.max(list));
    }
}

输出结果为:

集合的最大值是: 67

6 Java Collections的例子:min()

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections的例子
 */
import java.util.*;

public class Demo {

    public static void main(String a[]){
        List<Integer> list = new ArrayList<Integer>();
        list.add(46);
        list.add(67);
        list.add(24);
        list.add(16);
        list.add(8);
        list.add(12);
        System.out.println("集合的最小值是: "+Collections.min(list));
    }
}

输出结果为:

集合的最小值是: 8