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

你可能感兴趣的文章
oracle 创建双向备份,Materialized View 物化视图实现 Oracle 表双向同步
查看>>
oracle 创建字段自增长——两种实现方式汇总
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
oracle 可传输的表空间:rman
查看>>
Oracle 启动监听命令
查看>>
Oracle 启动阶段 OPEN
查看>>
Oracle 在Drop表时的Cascade Constraints
查看>>
Oracle 在Sqlplus 执行sql脚本文件。
查看>>
Oracle 如何处理CLOB字段
查看>>
oracle 学习
查看>>
oracle 定义双重循环例子
查看>>
ORACLE 客户端工具连接oracle 12504
查看>>
Oracle 客户端连接时报ORA-01019错误总结
查看>>
oracle 嵌套表 例子,Oracle之嵌套表(了解)
查看>>
Oracle 常用命令
查看>>
Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
查看>>
Oracle 拆分以逗号分隔的字符串为多行数据
查看>>
Oracle 排序中使用nulls first 或者nulls last 语法
查看>>
oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
查看>>
oracle 数据库dg搭建规范1
查看>>