Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建类的数组,将数组中的各个值作为参数传入_Java_Java 8_Java Stream - Fatal编程技术网

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

Java 创建类的数组,将数组中的各个值作为参数传入,java,java-8,java-stream,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])); } 列表卡=新的数组列表(秩.长度); for(int i=0;inew Card(ranks[i],suits[i],

我觉得我忽略了一些基本的东西。我正在寻找一种优雅的方式:

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]));
}
列表卡=新的数组列表(秩.长度);
for(int i=0;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)));
cards=IntStream.range(0,ranks.length).mapToObj(i->new Card(ranks[i],suits[i],values[i])).collect(collector.toCollection(()->new arraraylist(ranks.length));

但这感觉太过分了。有更好的方法吗?

for-loop方法没有错,但是如果您想使用
s,可以简化
收集
部分(您可以不使用自定义容量和
列表
实现):


您是如何初始化
等级
套装
?您是硬编码的还是来自某个地方的值?@Sweeper它们是传递给构造函数的字符串数组,在传递它们的另一侧硬编码(但仅作为示例),而不是硬编码三个数组,然后从它们创建卡片,为什么不硬编码卡片数组:
{new card(…),new card(…),new card(…),new card(…)}
如果您不喜欢for循环?
cards = IntStream.range(0, ranks.length).mapToObj(i -> new Card(ranks[i], suits[i], values[i])).collect(Collectors.toList());