博客
关于我
Java集合-Collections类详解
阅读量:364 次
发布时间:2019-03-04

本文共 3204 字,大约阅读时间需要 10 分钟。

Java Collections类详解

1. 排序

Collections类提供了多种排序方法,主要包括两种形式的sort方法:

1.1 sort(List
list)

该方法使用元素的默认排序方式对列表进行排序。默认排序规则是基于元素的自然顺序,适用于基本数据类型和其 wrapper 类。例如:

  • 对于1,5,6,2,默认排序结果为1,2,5,6。
  • 对于a,c,b,d,默认排序结果为a,b,c,d。

1.2 sort(List
list, Comparator<? super T> c)

该方法允许开发者自定义排序规则。通过传递一个Comparator接口实例,可以指定元素之间的比较逻辑。例如:

Collections.sort(list2, new Comparator
() { @Override public int compare(Person p1, Person p2) { return Integer.compare(p1.getAge(), p2.getAge()); }});

1.3 测试代码

以下是一个简单的测试示例:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import com.trs.entity.Person;public class TestCollections {	public static void main(String[] args) {		List
list1 = new ArrayList<>(); list1.add("ccc"); list1.add("bbb"); list1.add("aaa"); list1.add("ddd"); Collections.sort(list1); System.out.println("list1排序后:" + list1); List
list2 = new ArrayList<>(); list2.add(new Person(25, "Andy", 9500, "Writer")); list2.add(new Person(27, "Rose", 8500, "Saler")); list2.add(new Person(21, "Jack", 8800, "Singer")); // 按照年龄排序 Collections.sort(list2, new Comparator
() { @Override public int compare(Person p1, Person p2) { return p1.getAge() - p2.getAge(); } }); System.out.println("list2按年龄排序后:" + list2); }}

2. 二分法查找

Collections类还提供了二分法查找的方法,适用于已排序的列表:

2.1 binarySearch(List<? extends Comparator<? super T>> list, T key)

该方法用于在已排序的列表中查找指定的键。返回值如下:

  • 正数:键在列表中的索引位置。
  • 0:键等于列表中的某个元素。
  • 负数:键不在列表中,索引位置为负数表示查找位置相对于末尾的偏移量。

2.2 binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

该方法与第一种方法类似,但允许自定义比较器。

2.3 示例

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestCollections {	public static void main(String[] args) {		List
list1 = new ArrayList<>(); list1.add("ccc"); list1.add("bbb"); list1.add("aaa"); list1.add("ddd"); Collections.sort(list1); int index = Collections.binarySearch(list1, "ddd"); System.out.println("binarySearch结果:" + index); }}

3. 混排

Collections类提供了两个混排方法:

3.1 shuffle(List<? extends Object> list)

该方法使用默认随机源对列表进行随机置换。所有置换的可能性基本相同。

3.2 shuffle(List<? extends Object> list, Random rnd)

该方法使用指定的随机源对列表进行置换。

3.3 示例

import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Random;public class TestCollections {	public static void main(String[] args) {		Random random = new Random(47);		Integer[] array = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };		List
list = new ArrayList<>(Arrays.asList(array)); System.out.println("列表初始内容:" + list); Collections.shuffle(list, random); System.out.println("列表混排后:" + list); }}

4. 反转

Collections类提供了一个方法来对列表进行反转:

4.1 reverse(List<? extends Object> list)

该方法对列表进行降序排序,基于元素的自然顺序。

4.2 示例

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestCollections {	public static void main(String[] args) {		List
list = new ArrayList<>(); list.add(1); list.add(4); list.add(2); list.add(8); System.out.println("列表初始内容:" + list); Collections.reverse(list); System.out.println("列表反转后:" + list); }}

总结

Collections类是Java集合工具类中的重要成员,提供了丰富的操作方法,包括排序、查找、混排和反转等功能。通过合理使用这些方法,可以显著提升代码的简洁性和性能。

转载地址:http://pxne.baihongyu.com/

你可能感兴趣的文章
Objective-C实现O(E + V) 中找到 0-1-graph 中的最短路径算法(附完整源码)
查看>>
Objective-C实现OCR文字识别(附完整源码)
查看>>
Objective-C实现odd even sort奇偶排序算法(附完整源码)
查看>>
Objective-C实现ohms law欧姆定律算法(附完整源码)
查看>>
Objective-C实现P-Series algorithm算法(附完整源码)
查看>>
Objective-C实现page rank算法(附完整源码)
查看>>
Objective-C实现PageRank算法(附完整源码)
查看>>
Objective-C实现pancake sort煎饼排序算法(附完整源码)
查看>>
Objective-C实现pascalTriangle帕斯卡三角形算法(附完整源码)
查看>>
Objective-C实现patience sort耐心排序算法(附完整源码)
查看>>
Objective-C实现PCA(附完整源码)
查看>>
Objective-C实现perceptron算法(附完整源码)
查看>>
Objective-C实现perfect cube完全立方数算法(附完整源码)
查看>>
Objective-C实现perfect number完全数算法(附完整源码)
查看>>
Objective-C实现perfect square完全平方数算法(附完整源码)
查看>>
Objective-C实现permutate Without Repetitions无重复排列算法(附完整源码)
查看>>
Objective-C实现PNG图片格式转换BMP图片格式(附完整源码)
查看>>
Objective-C实现pollard rho大数分解算法(附完整源码)
查看>>
Objective-C实现Polynomials多项式算法 (附完整源码)
查看>>
Objective-C实现power iteration幂迭代算法(附完整源码)
查看>>