[英]Adding multiple Arraylist items into one ArrayList item
我有兩個 ArrayList,並且想將 5 個項目的范圍從一個 ArrayList 放入另一個中。 我當前的代碼如下所示:
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 循環
你想要這樣的東西
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 方法並使該方法通用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.