2013-01-17 13 views
4

嗨,大家我試圖打印所有重複的元素,這工作正常,但輸出沒有按順序(從用戶輸入或從文本文件)。 我想要打印訂單中的所有元素(不打印重複項)。我怎麼做? 該代碼是從這Find the duplicate elements in arraylist and display 感謝@Cory肯代爾的代碼。使用Map <String,Integer>在輸入順序中查找數組列表中的重複項

**********更新的問題:代碼現在完美的與LinkedHashMap。現在,我希望輸出以增量方式使用編號項目符號(即1. name1 = 2)進行打印。謝謝

List<String> strings = new ArrayList<String>(); 
// suppose datas are entered by user incrementally or from a text files. 

Map<String, Integer> counts = new HashMap<String, Integer>(); 

for (String str : strings) { 
    if (counts.containsKey(str)) { 
     counts.put(str, counts.get(str) + 1); 
    } else { 
     counts.put(str, 1); 
    } 
} 

for (Map.Entry<String, Integer> entry : counts.entrySet()) { 
    System.out.println(entry.getKey() + " = " + entry.getValue()); 
} 
+2

嘗試LinkedHashMap的 – Renjith

+1

你說(重複不打印)1.'打印所有複製elements'和2'打印順序與所有元素'。你真的想要哪一個? –

+0

抱歉,我想按順序打印所有元素。謝謝 – Casper

回答

6

如果你想記住你的地圖中的插入順序,你需要使用LinkedHashMap。你的情況,你有

Map<String, Integer> counts = new LinkedHashMap<String, Integer>(); 
+0

謝謝,這個作品完美:) – Casper

+0

@ user1986597:那麼你應該接受幫助答案:[如何接受答案工作?](http://meta.stackexchange.com/a/5235/186652) – jlordo

+0

完成,但是現在我想用增量號顯示該列表,我怎樣才能用上面的代碼來做到這一點。謝謝 – Casper

3

HashMap更換

Map<String, Integer> counts = new HashMap<String, Integer>(); 

如果你關心natural order未下令或排序,使用LinkedHashMap如果你關心insertion order,或使用TreeMap

+0

謝謝,作品完美! – Casper

+0

歡迎您,請接受一個答案,以表達您的感激:) – PermGenError

1

A LinkedHashMap將保留訂單。

Map<String, Integer> counts = new LinkedHashMap<String, Integer>(); 

關於LinkedHashMap

的哈希表和鏈接列表實現Map接口,具有 預知的迭代順序。該實施方式與HashMap 的不同之處在於其保持通過其所有 條目運行的雙向鏈表。此鏈接列表定義了迭代排序,通常是鍵被插入到地圖 (插入順序)中的順序。

1
public class FindDup { 
    public static void main(String[] args) { 
     String str[] = { "yogi", "ram", "ram", "yogi", "yogi", "yogi", "raju", "raju", "ram", "yogi", }; 
     Map<String, Integer> map = new HashMap<String, Integer>(); 
     for (String s : str) { 
      if (map.containsKey(s)) { 
       map.put(s, map.get(s) + 1); 
      } else { 
       map.put(s, 1); 
      } 
     } 
     for (Entry<String, Integer> e : map.entrySet()) { 
      System.out.println(e.getKey() + "---" + e.getValue()); 

     } 
    } 
} 
相關問題