どのように重複する行を見つけ、彼らの前に繰り返し回数を表示します

あなたのアダム:

はい、些細な質問は、私は重複を見つけることができませんでした。現時点では、このコレクション(ArrayListの)から:

Java
C#
Java
Python

(つまり、各単語の上に発生した重複の数になります):私はこれを取得する必要があります

Java 2
C# 1
Java 2
Python 1

現時点では私は地図を使用していますが、それは重複を削除し、それは私が何を得るのです。

Java 2
C# 1
Python 1

ここに私のコードは次のとおりです。

      Map<String, Integer> map = new HashMap<>();
        for (String temp : array) {
            Integer count = map.get(temp);
            if (count != null){
                map.put(temp, count + 1);
            }
            else {
                map.put(temp, 1);
            }
        }

私は新しいリストのすべての要素を「親」リストの各要素を比較し、このリストを通過し、別のリストへの書き込みデータにアイデアを持っていました。そんな感じ:

List<String> resultList = new ArrayList<>();
List<String> mainList = new ArrayList<>();

    for (int i = 0; i < arrayList.size(); i++) {
        mainList.add(i,arrayList.get(i));
    }

    for (int i = 0; i < mainList.size(); i++) {
            int x = 1;
        for (String anArray : arrayList) {
            if (mainList.get(i).equals(anArray)) {
                resultList.add(i,mainList.get(i) + " "+ x++);
            }
        }
    }
    resultList.forEach(System.out::println);

これは私が必要として動作しますが、それは、重複を検出したときにも、追加の行を作成します。

Java 2
C# 1
Java 2
Python 1
Java 1
Java 1

一覧での実装では、私はそれが1で現在の要素が増加することで問題を持っているだけでなく、同時に別のものを作成します。

Guysは、私は私の問題を解決するために私を案内します任意のアイデアや手がかりにご満足いただけることでしょう!

UPD:この質問へのすべての答えは神です。君たちありがとう!私は他の人を怒らせずに正しい答えを選択しようとしてぎこちない感じ。

フアン・カルロス・メンドーサ:

あなたは使用することができCollections.frequency、リスト内の各単語の出現回数を印刷するには、リストを反復しながら:

public static void main(String[] args) {
    List<String> list = Arrays.asList("Java", "C#", "Java", "Python");
    list.forEach( s -> System.out.println(s + " " + Collections.frequency(list, s)));
}

出力:

Java 2
C# 1
Java 2
Python 1

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=196522&siteId=1