No.3
- 回答日時:
配列のまま数えるなら
String[] a = { "aaa", "bbb", "aaa", "ccc", "bbb", "aaa" };
String[] b = { "1", "1", "1", "2", "1", "2" };
int length = a.length;
int[] c = new int[length];
java.util.Arrays.fill(c, 1);
for (int i = length - 1; i >= 0; i--) {
int count = c[i];
String ai = a[i], bi = b[i];
for (int j = i - 1; j >= 0 && count > 0; j--) {
if (a[j] == ai && b[j] == bi) {
c[j] += count;
count = 0;
}
}
if (count > 0) {
System.out.println(ai + " - " + bi + " : " + count + "個");
}
}
No.2
- 回答日時:
キーをString(ArrayAの要素)、値を「キーをString(ArrayBの要素)、値をInteger(件数)とするMap」とするMapと、2重にMapを使うのが判りやすいのではないでしょうか?
Map mapA = new HashMap();
for (int index=0; index < ArrayA.length; index++ ) {
String keyA = ArrayA[index];
String keyB = ArrayB[index];
Map mapB = (Map) mapA.get(keyA);
if (mapB == null) {
mapB = new HashMap();
mapA.put(keyA,mapB);
}
Integer count = (Integer) mapB.get(keyB);
if (count == null) {
count = new Integer(0);
} else {
count = new Integer(count.intValue() + 1);
}
mapB.put(keyB,count);
}
for (Iterator iteA = mapA.keySet(); iteA.hasNext(); ) {
String keyA = (String)iterA.next();
Map mapB = (Map) mapA.get(keyA);
for (Iterator iterB = mapB.keySet(); iterB.hasNext(); ) {
String keyB = (String)iterB.next();
Integer count = (Integer) mapB.get(keyB);
System.out.println(keyA + " - " + keyB + " : " + count + "個");
}
}
No.1ベストアンサー
- 回答日時:
配列 A,B 双方を合成したものをキーとしてMapで出現数を数えるのが一番簡単だと思います。
以下サンプルソース。
String[] arrayA = { "aaa","bbb","aaa","ccc","bbb","aaa" };
String[] arrayB = { "1","1","1","2","1","2" };
// 出現数を記録するMap
Map map = new TreeMap();
for (int i = 0; i < arrayA.length; i++) {
// 配列の合成
String key = arrayA[i] + arrayB[i];
//mapにすでに組み合わせ要素が存在するなら、出現数を+1
if(map.containsKey(key)){
Integer count = (Integer)map.get(key);
count = new Integer( count.intValue() + 1 );
map.put( key, count );
}else{
// 初出の組み合わせは出現数1をセット
map.put( key, new Integer(1) );
}
}
// 出力
for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
String key = (String) iter.next();
Integer count = (Integer) map.get( key );
System.out.println(key + " : " + count + "個");
}
Stringなら合成は単純に連結させるだけでいいですが、それ以外のオブジェクトは合成に関して一工夫必要だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をセッションに割り当てた後で
-
JavaBeansの配列の値取得方法に...
-
多次元配列はなぜ必要???
-
ページング
-
ArrayListからBean配列に値をセ...
-
csvファイルを2次元配列に格納
-
String[] とVectorの使い分け
-
sqlparamaterでIN句を使いたい。
-
C言語でunsigned char配列を連...
-
無名配列の作成方法について質問
-
配列で、値の入っている要素数...
-
n番目に大きな値を探索する
-
配列について
-
Javaで文字と数字が混ざったも...
-
main(String[] args) の args...
-
javaの問題
-
配列の中で入れ換えをして逆順...
-
javaでEUC-JP文字列→UTF-8への変換
-
配列の中に複数存在する数がい...
-
Java 配列に1から25以外の値が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
Java配列の問題を教えてくださ...
-
配列の中に複数存在する数がい...
-
配列で、値の入っている要素数...
-
java
-
『args[]』とは?
-
javaで大容量テキストファイル...
-
C#で動的配列Listの中身をListB...
-
csvファイルを2次元配列に格納
-
Javaで文字を漢字であるか否か...
-
フローチャート
-
javaについて
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列について
-
n番目に大きな値を探索する
-
cloneメソッドについて (java)
おすすめ情報