0

出力のような配列内の要素のリストは、次のような[121,122,121,122,123,121,122] すべての重複要素の配列でなければなりません

[121,121,121]
[122,122,122]
[123]

Java 1.4の使用に制限されています。 これは、このバージョンの最後のリリースになる予定です。アプリは、1.4 のみをサポートする SAP J2EE サーバーで実行されます。

@Subhrajyoti Majumder のヒントから完全なコードを参照してください

サイズは9を印刷しますが、反復すると印刷が多すぎます..出力は、配送番号に基づいて次のようになります

[a1,a2]
[a3,a4]
[a6]
[a7,a8,a9,a10]

前もって感謝します。

4

1 に答える 1

3

あなたの質問を正しく理解した場合、あなたの解決策に関係なく、入力は配列(重複を含む)になり、出力は重複配列のリストになります。私はこの問題に対して簡単なアプローチをしています。それは、MapどこIntegerがキーでありList、値であるかということです。以下に小さなスニペット (Java 1.4 をサポート) を書きます。

Map map = new HashMap();
int[] array = {121,122,121,122,123,121,122};
for(int i=0;i<array.length;i++){
    if(map.get(array[i])==null){ // no entry available
         List list = new ArrayList();
         list.add(array[i]);
         map.put(array[i],list);
    }else // entry is already available
       map.get(array[i]).add(array[i]);
}

Java のバージョンに制約があることは知っていますが、これは Googleのコレクション ライブラリである guavaのMultiSetを使用するとより簡単になる可能性があります。ライブラリは Java 1.6+ 用です。

スニペット -

Multiset<Inetger> multiSet = HashMultiset.create();
int[] array = {121,122,121,122,123,121,122};
multiSet.addAll(Arrays.asList(array));
for (Inetger i : multiSet.elementSet()) {
    System.out.println(i + ": " + multiSet.count(i));
}
于 2013-06-20T04:57:20.127 に答える