Java - Alternativa za vnořené cykly?
Dobrý den,
Potřeboval bych poradit, jak nahradit vnořené cykly. Řekněme, že budu mít příklad níže.
var array = new char[]{'a', 'b', 'c', 'd'};
var list = getVariation(array, 4);
public static ArrayList<String> getVariation(char characters[], int number_of_characters) {
var length = characters.length;
var list = new ArrayList<String>();
switch (number_of_characters) {
case 2 -> {
for (var i = 0; i < length; i += 1) {
for (var j = 0; j < length; j += 1) {
list.add(characters[i] + "" + characters[j]);
}
}
}
case 3 -> {
for (var i = 0; i < length; i += 1) {
for (var j = 0; j < length; j += 1) {
for (var k = 0; k < length; k += 1) {
list.add(characters[i] + "" + characters[j] + "" + characters[k]);
}
}
}
}
case 4 -> {
for (var i = 0; i < length; i += 1) {
for (var j = 0; j < length; j += 1) {
for (var k = 0; k < length; k += 1) {
for (var l = 0; l < length; l += 1) {
list.add(characters[i] + "" + characters[j] + "" + characters[k] + "" + characters[l]);
}
}
}
}
}
return list;
}
Tento kód je už z principu nepřehledný, protože musí pro každé číslo to napsat zvlášť, jsou omezená pouze na 2,3,4 a z hlediska optimalizace je to taky děs.
Dají se, prosím Vás, nějak vnořené cykly nahradit něčím jiným? Už jenom proto, abych tam mohl zadat libovolné číslo a ne pouze 2,3,4.
Děkuji