扫码一下
查看教程更方便
集合框架定义了几种可应用于集合和Map的算法。
这些算法被定义为 Collections 类中的静态方法。 其中一些方法可能会抛出 ClassCastException,当尝试比较不兼容的类型时会发生这种情况;当尝试修改不可修改的集合时会抛出 UnsupportedOperationException,
集合框架算法中定义的方法总结如下表
序号 | 方法 | 描述 |
---|---|---|
1 | static int binarySearch(List list, Object value, Comparator c) | 在按照 c 排序的列表中搜索值。 返回值在列表中的位置,如果未找到值,则返回 -1。 |
2 | static int binarySearch(List list, Object value) | 在列表中搜索值。 列表必须排序。 返回值在列表中的位置,如果未找到值,则返回 -1。 |
3 | static void copy(List list1, List list2) | 将 list2 的元素复制到 list1。 |
4 | static Enumeration enumeration(Collection c) | 返回 c 上的枚举。 |
5 | static void fill(List list, Object obj) | 将 obj 分配给列表的每个元素。 |
6 | static int indexOfSubList(List list, List subList) | 在列表中搜索第一次出现的 subList。 返回第一个匹配项的索引,如果未找到匹配项,则返回 .1。 |
7 | static int lastIndexOfSubList(List list, List subList) | 在列表中搜索最后一次出现的 subList。 返回最后一个匹配项的索引,如果没有找到匹配项,则返回 .1。 |
8 | static ArrayList list(Enumeration enum) | 返回一个包含枚举元素的 ArrayList。 |
9 | static Object max(Collection c, Comparator comp) | 返回由 comp 确定的 c 中的最大元素。 |
10 | static Object max(Collection c) | 返回由自然排序确定的 c 中的最大元素。 集合不需要排序。 |
11 | static Object min(Collection c, Comparator comp) | 返回 c 中由 comp 确定的最小元素。 集合不需要排序。 |
12 | static Object min(Collection c) | 返回 c 中由自然排序确定的最小元素。 |
13 | static List nCopies(int num, Object obj) | 返回包含在不可变列表中的 obj 的 num 个副本。 num 必须大于或等于零。 |
14 | static boolean replaceAll(List list, Object old, Object new) | 将列表中所有出现的 old 替换为 new。 如果至少发生了一次替换,则返回 true。 返回 false,否则返回。 |
15 | static void reverse(List list) | 反转列表中的顺序。 |
16 | static Comparator reverseOrder( ) | 返回一个反向比较器。 |
17 | static void rotate(List list, int n) | 将列表向右旋转 n 个位置。 要向左旋转,请为 n 使用负值。 |
18 | static void shuffle(List list, Random r) | 使用 r 作为随机数的来源,对列表中的元素进行 shuffle方法调用(即随机化)。 |
19 | static void shuffle(List list) | shuffle(即随机化)列表中的元素。 |
20 | static Set singleton(Object obj) | 将 obj 作为不可变集返回。 这是将单个对象转换为集合的简单方法。 |
21 | static List singletonList(Object obj) | 将 obj 作为不可变列表返回。 这是将单个对象转换为列表的简单方法。 |
22 | static Map singletonMap(Object k, Object v) | 将键/值对 k/v 作为不可变映射返回。 这是将单个键/值对转换为映射的简单方法。 |
23 | static void sort(List list, Comparator comp) | 根据 comp 确定的对 list 的元素进行排序。 |
24 | static void sort(List list) | 对列表中的元素进行排序,由它们的自然顺序确定。 |
25 | static void swap(List list, int idx1, int idx2) | 在 idx1 和 idx2 指定的索引处交换列表中的元素。 |
26 | static Collection synchronizedCollection(Collection c) | 返回由 c 支持的线程安全集合。 |
27 | static List synchronizedList(List list) | 返回由 list 支持的线程安全列表。 |
28 | static Map synchronizedMap(Map m) | 返回由 m 支持的线程安全映射。 |
29 | static Set synchronizedSet(Set s) | 返回由 s 支持的线程安全集。 |
30 | static SortedMap synchronizedSortedMap(SortedMap sm) | 返回由 sm 支持的线程安全排序集。 |
31 | static SortedSet synchronizedSortedSet(SortedSet ss) | 返回由 ss 支持的线程安全集。 |
32 | static Collection unmodifiableCollection(Collection c) | 返回由 c 支持的不可修改的集合。 |
33 | static List unmodifiableList(List list) | 返回由 list 支持的不可修改的列表。 |
34 | static Map unmodifiableMap(Map m) | 返回由 m 支持的不可修改的映射。 |
35 | static Set unmodifiableSet(Set s) | 返回由 s 支持的不可修改的集合。 |
36 | static SortedMap unmodifiableSortedMap(SortedMap sm) | 返回由 sm 支持的不可修改的排序映射。 |
37 | static SortedSet unmodifiableSortedSet(SortedSet ss) | 返回由 ss 支持的不可修改的排序集。 |
import java.util.*; public class AlgorithmsDemo { public static void main(String args[]) { // 创建和初始化链表 LinkedList ll = new LinkedList(); ll.add(new Integer(-8)); ll.add(new Integer(20)); ll.add(new Integer(-20)); ll.add(new Integer(8)); // 创建逆序比较器 Comparator r = Collections.reverseOrder(); // 使用比较器对列表进行排序 Collections.sort(ll, r); // 获取迭代器 Iterator li = ll.iterator(); System.out.print("List sorted in reverse: "); while(li.hasNext()) { System.out.print(li.next() + " "); } System.out.println(); Collections.shuffle(ll); // 显示随机列表 li = ll.iterator(); System.out.print("List shuffled: "); while(li.hasNext()) { System.out.print(li.next() + " "); } System.out.println(); System.out.println("Minimum: " + Collections.min(ll)); System.out.println("Maximum: " + Collections.max(ll)); } }
上面代码示例编译运行结果如下
List sorted in reverse: 20 8 -8 -20
List shuffled: 20 -20 8 -8
Minimum: -20
Maximum: 20