1

次のような文字列があります

 {APP,LEE,APP,KCC,KCC,LEE,APP}.

APP、LEE、KCC などの同じ値をそれぞれ別の配列リスト (任意のコレクション) にプッシュしたいと考えています。

例えば:

  • arraylist 1 には {APP,APP,APP} が必要です
  • arraylist 2 には {KCC,KCC} が必要です
  • arraylist 3 には {LEE,LEE} が必要です

そのため、個別のグループがいくつあり、その値は何かを特定できます。

前もって感謝します。

4

3 に答える 3

2

代わりに、ArrayListからセットを作成して(これにより重複が削除されます)、セットのサイズを取得すると、セットの各アイテムが1つのグループになります。

Set<String> groups = new HashSet<String>(list);

groups.size(); //Number of groups

for(String group : groups) {
    System.out.println(group); //Print each value
}
于 2013-03-05T11:41:13.340 に答える
1

を使用しMap<String, List<String>>ます。各値には要素のリストが含まれます (必要に応じて整数を使用してカウントできます)

要素を追加する場合:

List<String> elemList = myMap.get(key);
if (elemList == null){
    elemList = new ArrayList<String>;
    myMap.put(key, elemList);
}
elemList.add(key);

カウンターを使ったほうがいいのですが…

    Map<String, Integer> myMap = new HashMap<>();
...
    Integer count = myMap.get(key);
    if (count == null){
        myMap.put(key, 1);
    } else {
        myMap.put(key, count + 1);
    }
于 2013-03-05T11:43:55.900 に答える
1

各リストでマップを作成するのが最も簡単です。次に、キーが存在しない場合は、エントリを作成してから追加します。

このようなもの:

Map<String, List<String>> result = new HashMap<String, List<String>>();

String[] values = source.substring(1, source.length() - 1).split(",");
for (String value : values) {
   List<String> existingMatches = result.get(value);
   if (existingMatches == null) {
     existingMatches = new ArrayList<String>();
     result.put(value, existingMatches);
   }
   existingMatches.add(value);
}

個別の値のカウントだけが必要な場合は、List を AtomicInteger に置き換えて値をインクリメントすると、個別の文字列のマップと、それが表示される回数のカウントになります。

于 2013-03-05T11:46:32.387 に答える