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