如何创建含随机数的arraylist并按least to greatest排序
随机数ArrayList的升序(从小到大)排序实现
核心实现逻辑
不需要手动实现排序算法,直接借助Java集合框架的内置能力分两步完成:
- 构造阶段:因为ArrayList不支持直接存储int、double等基本类型,随机数需要存入Integer、Double等对应包装类再加入列表
- 排序阶段:对实现了自然比较逻辑的数值列表,直接调用官方排序API,默认就是从小到大的升序规则
可直接运行的示例代码
import java.util.ArrayList; import java.util.Random; import java.util.Collections; public class SortRandomList { public static void main(String[] args) { // 初始化空的ArrayList ArrayList<Integer> randomList = new ArrayList<>(); Random random = new Random(); // 循环生成指定数量的随机数(示例为10个0-100的整数)存入列表 for (int i = 0; i < 10; i++) { randomList.add(random.nextInt(101)); } System.out.println("排序前列表:" + randomList); // 执行从小到大(least to greatest)的升序排序 Collections.sort(randomList); System.out.println("排序后列表:" + randomList); } }
扩展写法与注意事项
- Java 8及以上版本可使用流式API完成等价排序,效果与
Collections.sort()完全一致:randomList = randomList.stream() .sorted() .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); - 对于Integer、Double、Long等内置数值包装类,
Collections.sort()默认就是按自然升序(从小到大)规则排序,不需要额外传入比较器 - 注意
Collections.sort()是原地排序方法,会直接修改原ArrayList的元素顺序,不会生成新的列表对象 - 如果列表存储的是自定义数值类,没有内置自然比较逻辑,需要在排序时传入升序比较器,示例:
// 自定义类按内部存储的数值字段升序排序 list.stream() .sorted((a, b) -> Double.compare(a.getNumValue(), b.getNumValue())) .toList(); - 性能说明:
Collections.sort()底层是优化后的归并排序实现,对ArrayList的随机访问特性做了适配,排序时间复杂度为O(n log n),常规业务场景下无性能瓶颈
内容的提问来源于stack exchange,提问作者Bradley
相关产品推荐
相关产品推荐

