簡體   English   中英

將多個 Arraylist 項添加到一個 ArrayList 項中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM