8.8 操作集合的工具类Collections 8.8.1 排序操作

8.8 操作集合的工具类Collections

Collections提供了什么功能

Java提供了一个操作SetListMap等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序查询修改等操作,还提供了将集合对象设置为不可变对集合对象实现同步控制等方法。

8.8.1 排序操作

常用排序方法

Collections提供了如下常用的类方法用于对List集合元素进行排序。

方法 描述
static void reverse(List<?> list) 反转方法:反转指定List集合中元素的顺序。
static void shuffle(List<?> list) 随机打乱方法:对List集合元素进行随机排序(shuffle方法模拟了“洗牌”动作)。
static <T extends Comparable<? super T>> void sort(List<T> list) 自然升序排序方法:根据元素的自然顺序对指定List集合的元素按升序进行排序
static <T> void sort(List<T> list, Comparator<? super T> c) 定制排序方法:根据指定Comparator产生的顺序对List集合元素进行排序。
static void swap(List<?> list, int i, int j) 交换两个元素的方法:将指定List集合中的i处元素和j处元素进行交换。
static void rotate(List<?> list, int distance) 循环移动方法,
  • distance为正数时,将list集合的后distance个元素“整体”移到前面;
  • distance为负数时,将list集合的前distance个元素“整体”移到后面。
该方法不会改变集合的长度。

实例

下面程序简单示范了利用Collections工具类来操作List集合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;

public class SortTest
{
public static void main(String[] args)
{
ArrayList nums = new ArrayList();
nums.add(2);
nums.add(-5);
nums.add(3);
nums.add(0);
// 输出:[2, -5, 3, 0]
System.out.println(nums);
// 将List集合元素的次序反转
Collections.reverse(nums);
// 输出:[0, 3, -5, 2]
System.out.println(nums);
// 将List集合元素的按自然顺序排序
Collections.sort(nums);
// 输出:[-5, 0, 2, 3]
System.out.println(nums);
// 将List集合元素的按随机顺序排序
Collections.shuffle(nums);
// 每次输出的次序不固定
System.out.println(nums);
}
}

一次运行效果如下:

1
2
3
4
[2, -5, 3, 0]
[0, 3, -5, 2]
[-5, 0, 2, 3]
[3, -5, 2, 0]