17370845950

Java Collections.reverse和Collections.shuffle的使用
Collections.reverse用于反转列表顺序,如将[apple, banana, cherry]变为[cherry, banana, apple],适用于倒序展示场景;2. Collections.shuffle用于随机打乱列表元素,常用于抽题或洗牌等需随机排序的场景,支持自定义Random实例。

在Java中,Collections.reverseCollections.shuffle 是两个常用的集合操作工具方法,它们都定义在 java.util.Collections 类中,用于对列表(List)进行特定的重排操作。下面分别介绍它们的使用方式和典型场景。

Collections.reverse:反转列表元素顺序

Collections.reverse(List list) 方法用于将指定列表中的元素顺序完全反转。也就是说,原来第一个元素变成最后一个,最后一个变成第一个。

这个方法直接修改原列表,不返回新列表。

示例:

Listwords = new ArrayList(); words.add("apple"); words.add("banana"); words.add("cherry"); System.out.println("反转前: " + words); // [apple, banana, cherry] Collections.reverse(words); System.out.println("反转后: " + words); // [cherry, banana, apple]

适用场景包括需要倒序展示数据但不想使用 Collections.sort 配合 Comparator.reverseOrder() 的情况,比如日志记录从新到旧显示等。

Collections.shuffle:随机打乱列表顺序

Collections.shuffle(List list) 方法会随机重新排列列表中的元素,常用于实现随机排序功能,比如抽题、洗牌等场景。

该方法也是直接修改原列表。内部使用默认的随机源,也可以传入自定义的 Random 实例以获得可重现的结果。

示例:

List numbers = new ArrayList(); for (int i = 1; i

若需重复测试或保证随机结果可复现,可以传入指定种子的 Random 对象:

Collections.shuffle(numbers, new Random(42)); // 使用固定种子

注意事项

这两个方法只支持可变的 List 实现(如 ArrayList、LinkedList),不能用于不可变列表或数组。

如果传入的是不可修改的列表(例如通过 Arrays.asList 创建且未包装成可变列表),会抛出 UnsupportedOperationException。

确保调用前列表是可修改的:

String[] arr = {"a", "b", "c"}; List list = new ArrayList(Arrays.asList(arr)); // 包装为可变列表 Collections.reverse(list);

基本上就这些。reverse 适合顺序翻转,shuffle 适合随机化排列,两者都是实用且简洁的工具方法。