我觉得我正在忽略一些基本知识。我正在寻找一种优雅的方式来做到这一点:
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)));
但这感觉像是一个重大的矫kill过正。有一个更好的方法吗?
最佳答案
for循环方法没有什么问题,但是,如果要使用Stream
,则可以简化collect
部分(可以在没有自定义容量和List
实现的情况下进行操作):
cards = IntStream.range(0, ranks.length).mapToObj(i -> new Card(ranks[i], suits[i], values[i])).collect(Collectors.toList());