Collections工具类
在Java中,针对集合的操作非常频繁,例如对集合中的元素排序、从集合中查找某个元素等。针对这些常见操作,Java提供了一个工具类专门用来操作集合,这个类就是Collections,它位于java.util包中。Collections类中提供了大量的静态方法用于对集合中元素进行排序、查找和修改等操作,接下来对这些常用的方法进行讲解。
1.添加、排序操作
Collections类中提供了一系列方法用于对List集合进行添加和排序操作,如表1所示。
表1 Collections常用添加和排序方法
方法声明 | 功能描述 |
---|---|
static <T> boolean addAll(Collection<? super T> c, T... elements) | 将所有指定元素添加到指定集合c中 |
static void reverse(List list) | 反转指定List集合中元素的顺序 |
static void shuffle(List list) | 对List集合中的元素进行随机排序 |
static void sort(List list) | 根据元素的自然顺序对List集合中的元素进行排序 |
static void swap(List list,int i,int j) | 将指定List集合中角标i处元素和j处元素进行交换 |
接下来通过一个案例针对表中的方法进行学习,如文件1所示。
文件1 Example25.java
1 import java.util.ArrayList;
2 import java.util.Collections;
3 public class Example25 {
4 public static void main(String[] args) {
5 ArrayList<String> list = new ArrayList<>();
6 Collections.addAll(list, "C","Z","B","K"); // 添加元素
7 System.out.println("排序前: " + list);
8 Collections.reverse(list); // 反转集合
9 System.out.println("反转后: " + list);
10 Collections.sort(list); // 按自然顺序排列
11 System.out.println("按自然顺序排序后: " + list);
12 Collections.shuffle(list); // 随机打乱集合元素
13 System.out.println("按随机顺序排序后: " + list);
14 Collections.swap(list, 0, list.size()-1); // 将集合首尾元素交换
15 System.out.println("集合首尾元素交换后: " + list);
16 }
17 }
运行结果如图1所示。
图1 运行结果
2.查找、替换操作
Collections类还提供了一些常用方法用于查找和替换集合中的元素,如表2所示。
表2 Collections常用查找和替换方法
方法声明 | 功能描述 |
---|---|
static int binarySearch(List list,Object key) | 使用二分法搜索指定对象在List集合中的索引,查找的List集合中的元素必须是有序的 |
static Object max(Collection col) | 根据元素的自然顺序,返回给定集合中最大的元素 |
static Object min(Collection col) | 根据元素的自然顺序,返回给定集合中最小的元素 |
static boolean replaceAll(List list,Object oldVal,Object newVal) | 用一个新值newVal替换List集合中所有的旧值oldVal |
接下来对表中的方法通过一个案例来演示如何查找、替换集合中的元素,如文件2所示。
文件2 Example26.java
1 import java.util.ArrayList;
2 import java.util.Collections;
3 public class Example26 {
4 public static void main(String[] args) {
5 ArrayList<Integer> list = new ArrayList<>();
6 Collections.addAll(list, -3,2,9,5,8);// 向集合中添加所有指定元素
7 System.out.println("集合中的元素: " + list);
8 System.out.println("集合中的最大元素: " + Collections.max(list));
9 System.out.println("集合中的最小元素: " + Collections.min(list));
10 Collections.replaceAll(list, 8, 0); // 将集合中的8用0替换掉
11 System.out.println("替换后的集合: " + list);
12 Collections.sort(list); //使用二分查找前,必须保证元素有序
13 System.out.println("集合排序后为: "+list);
14 int index = Collections.binarySearch(list, 9);
15 System.out.println("集合通过二分查找方法查找元素9所在角标为:"+index);
16 }
17 }
运行结果如图2所示。
图2 运行结果
Collections工具类中还有一些其他方法,有兴趣的读者,可以根据需要自学API帮助文档,这里就不再介绍了。