-1

ソートされていない文字列エントリを含む配列があり、それを古い配列のすべてのエントリとそのエントリの存在量 (各文字列の出現数) を含む 2D 配列に "変換" したいと考えています。

Javaでそれを達成する方法がわかりません.配列には90k以上のエントリがあるため、それが良い方法であるかどうかはわかりません.

4

3 に答える 3

2

地図を使用することをお勧めします:

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

 for (String s : theOriginalArray) {
      Integer count = counted.get(s);
      if (count == null) {
           counted.put(s, 1);
      } else {
           counted.put(s, count + 1);
      }
 }
于 2013-07-30T13:39:10.503 に答える
1

このようなもの?

リストとマップでやったのですが、配列をリストに変換するのは簡単で、扱いやすいです。

public static Map<String, Integer> getUniqueStrings(List<String> rawData) {
    Map<String, Integer> uniques = new HashMap<String, Integer>();

    for(String s : rawData) {
        if(uniques.containsKey(s)) {
            uniques.put(s, uniques.get(s) + 1);
        } else {
            uniques.put(s, 1);
        }
    }

    return uniques;
}

もちろん、90K エントリの場合は、ある程度の時間がかかります。

于 2013-07-30T13:39:37.990 に答える
1

これは生徒の問題ですか?そうでない場合は、Google Guava が提供するような定型ソリューションを使用できます。

import com.google.common.collect.HashMultiSet;
import com.google.common.collect.MultiSet;
// ...
String[] stringArray = ...;
MultiSet<String> bag = HashMultiSet.create();
Collections.addAll(bag, stringArray);
int sos = bag.count("Stack Overflow");
于 2013-07-30T13:43:45.740 に答える