2015-10-14 104 views
1

從這些數據結構,我想刪除的價值元素,滿足一定條件刪除由價值元素滿足一定條件

<Data Structures> 

- RowSortedTable<String, String, Double> a;  (Guava Table) 
- HashMap<String, Double> b; 

previous question,我發現使用Collections.Singleton但是優雅的答案,它看起來像精確匹配是必需的。

hmap.values().removeAll(Collections.singleton("Two")); 

在這裏,我想從表格或地圖中刪除其值小於某個閾值的元素。你會怎麼寫代碼?


我剛剛檢查了兩個答案,那些是關於地圖的答案,表格的情況如何?我的解決方案如下。

for (Iterator<String> it1 = proptypeconf.columnKeySet().iterator(); it1.hasNext();) { 
     String type = it1.next(); 
     System.out.println(type); 
     for (Iterator<Map.Entry<String, Double>> it2 = proptypeconf.column(type).entrySet().iterator(); it2.hasNext();){ 
      Map.Entry<String, Double> e = it2.next(); 
      if (e.getValue() < conflist.get(index-1)) { 
       it2.remove(); 
      } 
     } 
    } 
+0

'Table'完全沒有區別。只需使用'table.values()'與地圖相同。您可以使用完全相同的代碼。 –

+0

@LouisWasserman謝謝!剛剛檢出表格的工作完全一樣。我試圖解決一個難題... :( – SUNDONG

回答

1
Iterator<Integer> iterator = hmap.values().iterator(); 
while (iterator.hasNext()) { 
    if (iterator.next() < threshold) { 
    iterator.remove(); 
    } 
} 

當然,如果你對Java的8,它更容易:

hmap.values().removeIf(value -> value < threshold); 

表的工作原理完全相同;只需使用table.values()而不是hmap.values()