我感觉自己正在忽略一些基本知识。我正在寻找一种做到这一点的优雅方法:
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)));
但这感觉像是一个重大的过大杀伤力。有更好的方法吗?
答案 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());