You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

int转Integer并排序:Stream调用报错,咨询可行实现方式

问题分析与解决

嗨,我来帮你捋清楚这个问题~你之所以会遇到“无合适方法”的错误,核心原因是用错了生成流的方式:

错误原因

Arrays.stream()这个方法是专门用来处理数组的,但你在出错的那一行传入的是一个List<Integer>对象,编译器找不到能接收List的Arrays.stream()重载方法,自然就报错了。

修正方案

直接调用List自带的stream()方法就可以了,这是Java集合框架提供的默认方法,专门用来生成流。修正后的完整代码如下:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Testsorting {
    public static int [] prize = {5,2,3,7,1,5,9,0,2};
    public static void main(String [] args) {
        List<Integer> list = Arrays.stream(prize).boxed().collect(Collectors.toList());
        System.out.println(list);
        
        // 直接调用List的stream()方法生成流,再排序收集
        List<Integer> sortedList = list.stream()
                                      .sorted() // 默认升序排序,若要降序可加.sorted(Collections.reverseOrder())
                                      .collect(Collectors.toList());
        System.out.println(sortedList);
    }
}

更简洁的写法

其实你完全可以一步完成“数组转流→装箱→排序→收集为List”的操作,省去中间生成普通List的步骤,代码更高效:

List<Integer> sortedList = Arrays.stream(prize)
                                .boxed()
                                .sorted()
                                .collect(Collectors.toList());

额外说明

如果非要用Arrays.stream()来处理这个List,你得先把List转成数组才行,比如:

List<Integer> sortedList = Arrays.stream(list.toArray(new Integer[0]))
                                .sorted()
                                .collect(Collectors.toList());

但这种写法多了一步数组转换,没必要,还是直接用list.stream()更简洁直观。

内容的提问来源于stack exchange,提问作者user9739433

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:00