将多个Arraylist项添加到一个Arraylist项中



我有两个数组列表,想把5个项目的范围放入一个项目从一个数组列表到另一个数组列表。我现在的代码是这样的:

fragenArrayPack.add(fragenArray.get(0) + fragenArray.get(1) + fragenArray.get(2) + fragenArray.get(3) + fragenArray.get(4));
fragenArrayPack.add(fragenArray.get(5) + fragenArray.get(6) + fragenArray.get(7) + fragenArray.get(8) + fragenArray.get(9));

这是有效的,但非常不切实际。有更快/更好的方法来做这件事吗?

为什么要加上"+"也许你会创建一个包含5个对象的构造函数,或者简单地添加for loop

你想要这样的东西

public int sumRangeOfArrayList(int startIndex, int lastIndex, ArrayList<Integer> myNumberArrayList) {
if (startIndex < 0 || lastIndex < 0 || startIndex > myNumberArrayList.size() - 1 || lastIndex > myNumberArrayList.size() - 1 || startIndex > lastIndex) {
throw new RuntimeException("wrong input");
}
int sum = 0;
for (int i = startIndex; i <= lastIndex; i++) {
sum += myNumberArrayList.get(i);
}
return sum;
}

注意,我没有测试我的代码,我只是把它放在一起。但是你需要一个这样的方法,它可以计算和并且是可重用的。

假设你的列表包含Integer并且你正在使用Java 8,你可以使用流:

public static Integer addRange(ArrayList<Integer> list, Integer startingIndex, Integer amount) {
return list.stream().skip(startingIndex).limit(amount).reduce(0, Integer::sum);
}
fragenArrayPack.add(addRange(fragenArray, 0, 5));
fragenArrayPack.add(addRange(fragenArray, 5, 5));

用于字符串连接:

public static String concatRange(ArrayList<String> list, Integer startingIndex, Integer amount) {
return list.stream().skip(startingIndex).limit(amount).reduce("", String::concat);
}
fragenArrayPack.add(concatRange(fragenArray, 0, 5));
fragenArrayPack.add(concatRange(fragenArray, 5, 5));

如果你愿意,你可以参数化函数传递给reduce方法,并使该方法泛型

相关内容

最新更新