首页 > 解决方案 > Collections.sort() 和使用流排序有什么区别?

问题描述

我正在编写一个构建排序数字金字塔并返回二维数组的程序

public int[][] buildPyramid(List<Integer> inputNumbers) {
...
}

本单元测试

@Test(expected = CannotBuildPyramidException.class) // class doen't have any logic, just extends RintimeException
    public void buildPyramid8() {
        List<Integer> input = Collections.nCopies(Integer.MAX_VALUE - 1, 0);
        // run
        int[][] pyramid = pyramidBuilder.buildPyramid(input);
        // assert (exception)
    }

如果我使用传统方法不起作用 Collections.sort(inputNumbers) 所以我有一个例外

Java.lang.Exception: Unexpected exception, expected<com.alex.demo.tasks.pyramid.CannotBuildPyramidException> but was<java.lang.OutOfMemoryError>

但如果我使用 List<Integer> sorted = inputNumbers.stream().sorted().collect(Collectors.toList()); 我没有例外。为什么这样?

标签: java

解决方案


推荐阅读