Hallo,
ich bin auf der Suche, nach einem Algorithmus, der mir die Kombinationen von n-verschieden Arrays und n-verschiedenen Items berechnet.
Mein Tool läuft sonst grafisch basiert, ich habe hier zu Testzwecken ein konsolenbasiertes Tool geschrieben. Bei dem GUI-Tool stehen dem User verschiedenste Comboboxen, mit Möglichkeit der Mehrfachselektion, zur Verfügung.
Class Main:
Class Combinations:
Leider läuft es noch nicht so wie es soll.
Die Ergebnisliste sollte das lieferen:
Part_A1 Part_B1 Part_C1
Part_A1 Part_B2 Part_C1
Part_A2 Part_B1 Part_C1
Part_A2 Part_B2 Part_C1
Part_A3 Part_B1 Part_C1
Part_A3 Part_B2 Part_C1
Geht das überhaupt?
In meinem GUI-Tool befinden sich verschiedene Comboboxen mit verschiedenen Selections.
In diesem Test-tool sollen die selections (arrays) die Comboboxen repräsentieren.
Die Komplexität besteht darain, dass die Parameter und deren Selections n-verschieden sein können.
Vielleicht ist dies auch ganz einfach zu lösen, leider hab ich darin noch keine Idee,
Kann man mir bitte jemand helfen?
Vielen Dank
MfG
ManInBlack
ich bin auf der Suche, nach einem Algorithmus, der mir die Kombinationen von n-verschieden Arrays und n-verschiedenen Items berechnet.
Mein Tool läuft sonst grafisch basiert, ich habe hier zu Testzwecken ein konsolenbasiertes Tool geschrieben. Bei dem GUI-Tool stehen dem User verschiedenste Comboboxen, mit Möglichkeit der Mehrfachselektion, zur Verfügung.
Class Main:
Code:
package rekursion;
import java.util.ArrayList;
import java.util.List;
public class TestMain {
/**
* Test-Main
* @param args
*/
public static void main(String[] args) {
//object instancing
TestMain testMain = new TestMain();
//*******************************************************************
//First parameter
String [] selection1 = new String[3];
selection1[0] = ("A1");
selection1[1] = ("A2");
selection1[2] = ("A3");
testMain.setRpCollection(selection1);
// //Second parameter
String [] selection2 = new String[2];
selection2[0] = ("B1");
selection2[1] = ("B2");
testMain.setRpCollection(selection2);
//Third parameter
String [] selection3 = new String[2];
selection3[0] = ("C1");
testMain.setRpCollection(selection3);
//*******************************************************************
Combinations.buildCombinations(0);
}
public void setRpCollection(String[] strArray) {
List<String> arrayList = new ArrayList<String>();
for (int i = 0; i < strArray.length; i++) {
if (strArray[i] != null)
{
arrayList.add(strArray[i]);
}
}
Combinations.setCombinations( arrayList);
}
}
Class Combinations:
Code:
package rekursion;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Combinations {
private static List<List<String>> allSelections;
public static String buildCombinations( int ndx )
{
if( ndx >= allSelections.size() ){
return "\n";
}
Iterator<String> iterator = allSelections.get(ndx).iterator();
String result = "";
while( iterator.hasNext() ){
String part = (String) iterator.next();
result = part + " " + buildCombinations( ndx + 1);
System.out.println(result);
}
return result;
}
public static void setCombinations(List<String> arrayList) {
// allSelections doesn´t exist and is empty
if (allSelections == null) {
allSelections = new ArrayList<List<String>>();
}
List<String> cacheList = new ArrayList<String>();
for (String selectionItem : arrayList) {
cacheList.add("Part_" + selectionItem);
}
allSelections.add(cacheList);
}
}
Leider läuft es noch nicht so wie es soll.
Die Ergebnisliste sollte das lieferen:
Part_A1 Part_B1 Part_C1
Part_A1 Part_B2 Part_C1
Part_A2 Part_B1 Part_C1
Part_A2 Part_B2 Part_C1
Part_A3 Part_B1 Part_C1
Part_A3 Part_B2 Part_C1
Geht das überhaupt?
In meinem GUI-Tool befinden sich verschiedene Comboboxen mit verschiedenen Selections.
In diesem Test-tool sollen die selections (arrays) die Comboboxen repräsentieren.
Die Komplexität besteht darain, dass die Parameter und deren Selections n-verschieden sein können.
Vielleicht ist dies auch ganz einfach zu lösen, leider hab ich darin noch keine Idee,
Kann man mir bitte jemand helfen?
Vielen Dank
MfG
ManInBlack