-1

プロシージャに Arraylists からの組み合わせがあることを知りたいです。シナリオは以下の通り。以下のような 3 つの異なる Arraylist があるとします。

元:

  1. 【シルバー、ホワイト、グレー、パープル】
  2. 【ガソリン、ハイブリッド】
  3. 【トヨタ・マイクロ】

上記の 3 つの Arraylist から、以下のように組み合わせを作成できます。

元:

  1. シルバーガソリントヨタ
  2. シルバーガソリンマイクロ
  3. シルバー ハイブリッド トヨタ
  4. シルバー ハイブリッド マイクロ
  5. ホワイトガソリントヨタ
  6. ホワイトガソリンマイクロ
  7. ホワイトハイブリッドトヨタ
  8. ホワイト ハイブリッド マイクロ
  9. グレイガソリントヨタ
  10. グレーガソリンマイクロ
  11. グレー ハイブリッド トヨタ
  12. グレー ハイブリッド マイクロ
  13. パープルガソリントヨタ
  14. パープルガソリンマイクロ
  15. パープル ハイブリッド トヨタ
  16. パープル ハイブリッド マイクロ

私の場合、配列リストの数は動的です。1 つの arraylist のサイズも動的です。そのような場合、Javaを使って実装する方法を知りたいです。Javaを使用してこれを行う方法を誰かに提案してもらえますか?

ありがとう

4

3 に答える 3

1

外部ライブラリに反対していない場合、guava-librariesSets.cartesianProductはこれを正確に行うことができる非常に優れた方法を提供します。もちろん、リストを変換することになります...

Set<String> colors = ImmutableSet.of("Silver", "White", "Grey", "Purple");
Set<String> fuelTypes = ImmutableSet.of("Petrol", "Hybrid");
Set<String> brands = ImmutableSet.of("Toyota", "Micro");

Set<List<String>> result = Sets.cartesianProduct(colors, fuelTypes, brands);
System.out.println(result);
于 2013-11-05T07:15:55.747 に答える
0

この疑似コードをよく考えてください:

for (i for size of array1) {
    for (j for size of array2) {
        for (k for size of array3) {
            print array1[i] + array2[j] + array3[k]
        }
    }
}

Java では次のようになります。

int i, j, k;
int count = 0;
for (i = 0; array1.size(); i++) {
    for (j = 0; array2.size(); j++) {
        for (k = 0; array3.size(); k++) {
            count++;
            System.out.println(count + ". " +array1.get(i) + array2.get(j) + array3.get(k));
        }
    }
}
于 2013-11-05T05:58:59.443 に答える