创建一个类的数组,将数组中的各个值作为参数传递

时间:2018-08-26 08:04:47

标签: java java-8 java-stream

我感觉自己正在忽略一些基本知识。我正在寻找一种做到这一点的优雅方法:

List<Card> cards = new ArrayList<>(ranks.length);
for (int i = 0; i < ranks.length; i++) {
    cards.add(new Card(ranks[i],suits[i],values[i]));
}

Intellj想出了:

cards = IntStream.range(0, ranks.length).mapToObj(i -> new Card(ranks[i], suits[i], values[i])).collect(Collectors.toCollection(() -> new ArrayList<>(ranks.length)));

但这感觉像是一个重大的过大杀伤力。有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

for循环方法没什么问题,但是,如果您想使用Stream,则可以简化collect部分(无需自定义功能和List实现即可):

cards = IntStream.range(0, ranks.length).mapToObj(i -> new Card(ranks[i], suits[i], values[i])).collect(Collectors.toList());