学科分类
目录
Java基础

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帮助文档,这里就不再介绍了。

点击此处
隐藏目录