Java提供了一个操作集合的工具类:Collections,该类提供了一些常见的对集合(的操作。今天我就来简单总结一下。
操作顺序
- reverse
该方法的声明为:
public static void reverse(List<?> list)
使用该方法可以将一个List集合的顺序进行翻转。示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
list.add("Tom");
list.add("Jerry");
list.add("Spike");
System.out.println("翻转前:" + list);
Collections.reverse(list);
System.out.println("翻转后:" + list);
}
}
执行结果如下图所示:
- shuffle
该方法的声明如下:
public static void shuffle(List<?> list)
该方法的作用是将List集合的元素的顺序进行打乱处理。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
list.add("Tom");
list.add("Jerry");
list.add("Spike");
System.out.println("打乱顺序前:" + list);
Collections.shuffle(list);
System.out.println("打乱顺序后:" + list);
}
}
执行结果如下图所示:
- sort
Collectors提供了两个重载的方法,其声明分别如下:
public static <T extends Comparable<? super T>> void sort(List<T> list):对List集合的元素进行排序,采用默认的排序规则
public static <T> void sort(List<T> list, Comparator<? super T> c):对List集合的元素进行排序,采用传入的比较器进行排序
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(9);
// 使用默认规则排序
Collections.sort(list);
System.out.println("采用默认规则排序后:" + list);
// 采用自定义规则排序
Collections.sort(list, ((o1, o2) -> o2 - o1));
System.out.println("采用自定义规则排序后:" + list);
}
}
执行结果如下图所示:
- swap
该方法的作用是对List集合指定的两个索引的值进行交换。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
list.add("Tom");
list.add("Jerry");
list.add("Spike");
list.add("Tony");
System.out.println("交换前:" + list);
// 交换索引1和3处的值,也就是Jerry和Tony互换
Collections.swap(list, 1, 3);
System.out.println("交换后:" + list);
}
}
执行结果如下图所示:
- rotate
该方法的作用是将List集合的元素旋转指定距离。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<>();
list.add("Tom");
list.add("Jerry");
list.add("Spike");
list.add("Tony");
System.out.println("旋转前:" + list);
// 交换索引1和3处的值,也就是Jerry和Tony互换
Collections.rotate(list, 3);
System.out.println("旋转后:" + list);
}
}
执行结果如下图所示:
查找、统计
- binarySearch
该方法的作用是利用二分法查找List集合中的某个元素的索引,当然,前提是该集合是个有序的集合,否则会造成查找结果不准确。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(9);
Collections.sort(list);
System.out.println(list);
System.out.println(Collections.binarySearch(list, 9));
}
}
执行结果如下图所示:
- max
该方法的作用是返回该集合中最大元素。该方法有两个重载的方法,其声明分别如下:
- public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll):按照默认的自然排序获取集合中最大的元素
- public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp):按照指定的比较器获取集合中最大的元素。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(9);
Integer max = Collections.max(list);
System.out.println("max:" + max);
System.out.println("============================");
List<String> list2 = new ArrayList<>();
list2.add("Tom");
list2.add("Jerry");
list2.add("Tony");
String max2 = Collections.max(list2, Comparator.comparing(String::length));
System.out.println("max:" + max2);
}
}
执行结果如下图所示:
- min
min的作用与max类似,只不过是获取集合中最小都有元素。这里就不进行举例,大家类比max的使用即可。
- fill
该方法的作用是用指定的值填充集合。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(9);
System.out.println("填充前为:" + list);
Collections.fill(list, 0);
System.out.println("填充后为:" + list);
}
}
执行结果如下图所示:
- frequency
该方法的作用是返回集合中某个值出现的次数。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(5);
list.add(9);
list.add(5);
System.out.println("5出现的次数为:" + Collections.frequency(list, 5));
}
}
执行结果如下图所示:
- replaceAll
该方法的作用是用指定的新值替换掉对应的旧值。
示例代码如下所示:
public class TestCollections {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(5);
list.add(2);
list.add(5);
list.add(9);
list.add(5);
System.out.println("替换前:" + list);
Collections.replaceAll(list, 5, 0);
System.out.println("替换后:" + list);
}
}
执行结果如下图所示: