博客
关于我
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/

你可能感兴趣的文章
OpenCV 3.1 imwrite()函数写入异常问题解决方法
查看>>
OpenCV 4.1.0版drawContours
查看>>
opencv glob 内存溢出异常
查看>>
opencv Hog Demo
查看>>
opencv Hog学习总结
查看>>
opencv Mat push_back
查看>>
opencv putText中文乱码
查看>>
OpenCV Python围绕特定点将图像旋转X度
查看>>
opencv resize
查看>>
Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
查看>>
opencv SVM分类Demo
查看>>
OpenCV VideoCapture.get()参数详解
查看>>
opencv videocapture读取视频cap.isOpened 输出总是false
查看>>
opencv waitKey() 函数理解及应用
查看>>
OpenCV 中的图像转换
查看>>
OpenCV 人脸识别 C++实例代码
查看>>
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
查看>>