5

誰か助けてもらえますか?プログラムを作成する必要があります。このプログラムには10個の要素があり、arraylist重複する値の数を見つけて、値をwelとしてカウントして表示する必要があります。

例:私が持っていると言う

list = {"stack", "overflow", "stack", 
        "yahoo", "google", "msn", 
        "MSN", "stack", "overflow", "user" }

結果は次のようになります。

stack = 3
overflow = 2
google = 1
msn = 2
yahoo =1
user = 1
4

6 に答える 6

8

ハッシュマップを使用します。ここに簡単な実装があります

List<String> strings = new ArrayList<String>();
strings.put("stack", "overflow", "stack", "yahoo", "google", "msn", "MSN", "stack", "overflow", "user");

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());
}
于 2012-10-18T05:53:48.343 に答える
5

Google GuavaライブラリのMultiSet. 要素の倍数の追加、およびマルチセットに含まれる各要素の出現回数のカウントをサポートしています。

Multiset<String> wordsMultiset = HashMultiset.create();
wordsMultiset.addAll(words);
for(Multiset.Entry<String> entry : wordsMultiset.entrySet() ){
     System.out.println("Word : "+entry.getElement()+" count -> "+entry.getCount());
}
于 2012-10-18T05:51:44.693 に答える
3

次のように使用hashmap
します。

Map<String, Integer> occurrencies = new HashMap<String, Integer>();
for (String word : list) {
    occurrencies.put(word, occurrencies.containsKey(word)
    ? occurrencies.get(word) + 1 : 1);
}
for (Entry<String, Integer> entry : occurrencies.entrySet()) {
    System.out.println("Word: "+entry.getKey()
                     + ", occurences: "+entry.getValue());
}
于 2012-10-18T05:51:23.667 に答える
2
Map<String, Integer> frequency = new HashMap<String, Integer>();
for (String element : list) {
    if (frequency.contains(element)) {
        frequency.put(element, frequency.get(element) + 1);
    }
    else {
        frequency.put(element, 1);
    }
}
for (Map.Entry<String, Integer> entry : frequency.entrySet()) {
    System.out.print(entry.getKey() + " = " + entry.getValue() + " ");
}
System.out.println();
于 2012-10-18T05:52:38.223 に答える
1

使うHashMap

Map<String, Integer> freqMap = new HashMap<String, Integer>();
于 2012-10-18T05:51:54.977 に答える
1

を作成してMap<String, Integer>から、 を反復処理しますArrayList

次に、各要素について: -

  • マップに既に存在する場合はInteger、その要素の値を 1増やします。
  • 存在しない場合は、その要素をinitial Integer値 1で追加します
于 2012-10-18T05:52:17.750 に答える