在Java中使用Array.asList在列表列表中插入元素

3

我正在使用Java编码,有三个数组和一个列表的列表。

int[] recovery=bl.generateRecovery();
    int[] periods = bl.generatePeriods(recovery);
    int[] deadlines =  bl.generateDeadlines(periods);

    List<List<Integer>>temp=new ArrayList<List<Integer>>();

现在我想将数组作为列表添加到列表中。
我尝试使用以下方法:
temp.add(Arrays.asList(recovery));

但是它失败了。有人能告诉我怎么做吗?

3个回答

3

您可以使用Arrays.streamint[]上进行操作,将其boxed并作为List收集如下:

temp.add(Arrays.stream(recovery).boxed().collect(Collectors.toList()));

3
Arrays.asList(recovery)将为您提供一个List<int[]>对象,而不是List<Integer>。请尝试使用Integer[] recovery代替。
编辑: 您可能希望像generateRecovery等方法返回List<Integer>而不是int[]。数组不够灵活,通常最好使用List

我不会强制要求,但在API实现合同中保持清晰是很好的。 - Naman
@nullpointer 是的,我知道。我只是试图在代码中陈述问题。 - Dabiuteef

0
你正在尝试合并两种不同类型的数组(int[] 和 ArrayList<>)。 它们不同,你必须将它们统一为其中一种类型。
    int[] recovery= {1,2,3};

    List<int[]>temp=new ArrayList<>();

    temp.add(recovery);

    System.out.println(temp.get(0)[1]);

这段代码会打印出2。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接