簡體   English   中英

添加具有不同索引和大小的未在arraylist上重復的元素

[英]Add element not duplicated on arraylist with different index and size

我有2個ArrayList

由2列構成的ArrayList用戶: [2, 1, 2, 2] 2,1,2,2 [2, 1, 2, 2] 2表示用戶的ID,而1 and 2是服務的ID

ArrayList服務調用由1列組成的tmp[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

我想將arraylist用戶的第二列與arraylist服務的每個元素進行比較,如果它們不同,則將用戶ID和服務ID放在由2列組成的另一個數組中

我想要的結果是:

[2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 1, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23]

我嘗試但效果不佳

for(int i=0;i<users.size();i+=2)
            {
                for(int j=0;j<tmp.size();j++)
                {
                    if(users.get(i+1).equals(tmp.get(j)))
                    {

                    }
                    else
                    {
                        tmp2.add(users.get(i));
                        tmp2.add(tmp.get(j));
                    }
                }
            }

錯誤的輸出:

[2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 1, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23]

輸出應從[2,3 .......]

如果要收集未出現在users數組中的id,則在外部循環中迭代users是錯誤的:您甚至在查看users第二個“記錄”之前將元素添加到tmp2

您應該像這樣交換它們:

for(int service : tmp) {
  boolean found = false;
  for(int i = 0; i < users.size(); i += 2) {
    if(users.get(i+1) == service) found = true;
  }

  if(!found) {
    for (int i...) { 
      tmp2.add(users.get(i));
      tmp2.add(service);
    }
  }
}

當然,擁有“ 2列”列表是不好的做法。 考慮使User類具有2個字段。 使用流將有助於創建更具可讀性的代碼。

暫無
暫無

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

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