4

こんにちは、複製されたすべての要素を印刷しようとしていますが、これは正常に機能しますが、出力が正しくありません (ユーザー入力またはテキスト ファイルから)。すべての要素を順番に印刷したい (重複は印刷されません)。それ、どうやったら出来るの?コードはこれからのものです Find the duplicate elements in arraylist and display コードの @Cory Kendall に感謝します。

**********更新された質問: コードは 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());
}
4

4 に答える 4

6

Map での挿入順序を覚えておきたい場合は、 を使用する必要がありますLinkedHashMap。あなたの場合、交換する必要があります

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

Map<String, Integer> counts = new LinkedHashMap<String, Integer>();
于 2013-01-17T09:51:36.857 に答える
3

HashMapは順序付けられていないLinkedHashMapinsertion order、ソートされていません。TreeMapnatural order

于 2013-01-17T09:51:46.660 に答える
2
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());

        }
    }
}
于 2016-03-18T08:14:15.270 に答える
1

LinkedHashMapは順序を保持します。

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

LinkedHashMap:

Map インターフェイスのハッシュ テーブルとリンク リストの実装で、反復順序が予測可能です。この実装が HashMap と異なる点は、そのすべてのエントリを実行する二重リンク リストを維持することです。この連結リストは反復順序を定義します。これは通常、キーがマップに挿入された順序 (挿入順序) です。

于 2013-01-17T09:51:51.187 に答える