簡體   English   中英

Java-經過2次或更多次for循環后,將元素添加到新列表中

[英]Java - Adding elements to a new list after going through 2 or more for loops

因此,這段代碼只是我快速編寫的代碼,而不是我的實際代碼,但是在經歷兩個for loops和一些if statements后,我試圖將一個列表中的特定值添加到另一個列表中。

范例程式碼

List<Integer> intList = new ArrayList<>();
//example list [0, 20, 10, 9, 11, 7, 9, 14]

List<Integer> result = new ArrayList<>();
for (i=0; i < intList.size()-1; i++) {
    for (j=i+1; j < intList.size(); j++) {
        if (intList.get(j) > intList.get(i)) {
            result.add(intList.get(i));
        }
    }
}
system.out.println(result);

預期結果

[0, 9, 7, 9]

因此,在這種情況下,我希望列表中僅包含4個值,但是由於我要遍歷2次for loops多次訪問列表,所以我最終將相同值的多個重復添加到列表中(類似於[0,0,0,0,0,9,9,9,7,7,9] )。 如何解決此問題而不刪除重復的值,因為使用該值也會導致從列表中刪除第二個9。

在您的示例中,您正在比較數組的索引。 您要比較數組在各個索引處的值。

您只需要一個循環,就需要通過確保i不是最后一個索引來防止越界。

for (int i=0; i < intList.size()-1; i++) {
    if (intList.get(i+1) > intList.get(i)) {
        result.add(intList.get(i));
}

如果我理解了問題陳述,則您正在比較對值,即第一次迭代為0、20,第二次迭代為10、9,因此您需要添加break語句以避免重復,並增加i值以適應下一個對值

   List<Integer> intList = new ArrayList<>();

    //example list [0, 20, 10, 9, 11, 7, 9, 14]

    List<Integer> result = new ArrayList<>();
    for (int i=0; i < intList.size()-1; i++) {

        for (int j=i+1; j < intList.size(); j++) {

            if (intList.get(j) > intList.get(i)) {
                result.add(intList.get(i));                 
                break;
            }
            i++;
        }
    }
    System.out.println(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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