這個問題使我瘋了。我有vectorA(float),vectorB(string1),vectorC(string2)這是並行的,我想消除vectorA中的重複,而我設法保持向量之間的平行性。 任何想法?刪除重複項,同時保持並行列表同步
回答
爲您所看到的項創建一個set<float>
,通過vectorA
掃描記錄重複索引,然後刪除從矢量結尾開始返回時標記爲重複項的索引。
Set<Float> seen = new HashSet<Float>();
List<Integer> del = new List<Integer>();
for (int i = 0 ; i != vectorA.size() ; i++) {
if (seen.add(vectorA[i])) {
del.add(i);
}
}
for (int i = del.size()-1 ; i >= 0 ; i--) {
vectorA.remove(del[i]);
vectorB.remove(del[i]);
vectorC.remove(del[i]);
}
回頭很重要,因爲否則您的索引將不同步。
thnx它似乎有正確的邏輯,但我不能在java(?!)中找到這些方法。 insert()? push_back()? –
@ user1296783糟糕,我寫了C++代碼而不是Java :)它現在應該可以工作。 – dasblinkenlight
你的意思是del.elementAt(i)? –
創建一個結合三個值並覆蓋equals
和hashCode
的類。將這些實例添加到一個列表而不是三個並行列表。一旦準備好刪除重複項(假設您需要先保留它們並稍後刪除它們),請將它們添加到LinkedHashSet
並返回到ArrayList
。 LinkedHashSet
將保留廣告訂單(如果這不重要,請使用標準HashSet
),同時刪除重複項。
class Triple {
float num;
String a;
String b;
public boolean equals(Object o) {
if (o == null || !(o instanceof Triple))
return false;
return num == ((Triple)o).num; // strict equality
}
public int hashCode() {
return Float.floatToRawIntBits(num);
}
}
List<Triple> removeDuplicates(List<Triple> items) {
return new ArrayList<Triple>(new LinkedHashSet<Triple>(items));
}
這裏有一單通,原地算法:
Set<Float> seen = new HashSet<Float>();
int uniques = 0;
for (int i = 0; i < n; i++) {
if (seen.add(vectorA[i])) {
vectorA[uniques] = vectorA[i];
vectorB[uniques] = vectorB[i];
vectorC[uniques] = vectorC[i];
uniques++;
}
}
,然後大功告成後,忽略uniques
位置之後的所有元素(或它們全部複製到新的陣列)。
- 1. 刪除重複項,同時保持最後一行在兩列之間
- 2. SQL刪除與重複的值的行,同時保持一個
- 3. 刪除重複行,並保持
- 4. 刪除重複的行,同時總結一列並保留其他列
- 5. 從列表中刪除重複項並保留列表
- 6. 從文件中刪除重複列表,同時保持順序-python3.5
- 7. Excel - 同時刪除重複項和SUM
- 8. C++,如何橫切鏈接列表,同時刪除重複項
- 9. Python在維持秩序的同時從列表中刪除一些重複項?
- 10. 從列表中刪除項目,如果它在另一個列表中,同時保持重複 - Python
- 11. 併發隊列刪除同步或重新排序項目
- 12. 從列表中刪除重複項,保持最新
- 13. 刪除重複項保持不可
- 14. 如何查找並刪除重複項並保持最新?
- 15. 刪除重複項,同時保留熊貓中的NaN
- 16. 刪除Realm中的對象並保持tableview同步
- 17. 如何從Python列表中刪除重複項並保持順序?
- 18. 刪除重複,但保持
- 19. 從列表中刪除所有重複 - 保持無一重複的項目
- 20. 從列表中刪除項目並同時獲取項目
- 21. 刪除某些重複的行,同時保留其他
- 22. 以不同的方式從列表中刪除重複項
- 23. 刪除重複項,並保持不可修改類的訂購
- 24. 在合併相應列值的同時刪除一行中的重複列
- 25. 合併列表項文本,同時保持使用jQuery
- 26. 期待重複值運行時壓縮列表,同時保持索引查找
- 27. 刪除重複時的重複不在同一列
- 28. 如何刪除兩個匹配的行,同時刪除重複
- 29. 轉換陣列亂碼刪除重複項,並在同一時間增加值
- 30. 同步來自不同線程的列表中的項目並進行同步。
是'vectorA'排序,還是什麼?你是否想要消除精確的重複,或重複在某個epsilon,或什麼? –