2013-12-16 108 views
-5

我有一個ArrayList其每個元素的類型爲數據類型,其中,數據類型是一類從數組列表元素:刪除基於條件

class DataType{ 
String dId; 
String dType; 
String rId; 
} 

我需要從它的RID是相等的列表中刪除所有這樣的元件到任何其他元素的dID。 即,如果數據類型D1的dID值爲「abc」且數據類型D2的值爲rID爲「abc」,則從列表中移除D1和D2。

有人可以請建議最合適的方法來做到這一點。

+2

不,你嘗試一下,告訴我們是否以及爲什麼你的嘗試不起作用。 –

+1

詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。另請參閱:堆棧溢出問題清單 –

+1

開始一個循環... – MadProgrammer

回答

3

最簡單的辦法是遍歷一次並創建一個HashMap<String, List<DataType>>。 您將映射每個對象到其構成主鍵的dID

之後,你可以迭代你的ArrayList,檢查當前對象的rId,看看它是否在HashMapHashMap有O(1)查找時間,所以這應該是一個非問題。如果該值存在,請刪除當前值(您正在使用Iterator來防止ConcurrentModificationException),並刪除鍵值對的值部分中的對象。

請確保您已正確實施.equals(Object o).hashcode()