Mehrfaches Iterieren - ich schaff es nicht

Status
Nicht offen für weitere Antworten.

timothymarc

Mitglied
Hallo Leute,

ich habe ein verzwicktes Problem und obwohl ich schon Stunden investiert habe, komme ich zu keinem guten Ergebnis. Und zwar:

Ich habe einen Vector mit 3 Einträgen, die in sich wieder String-Arrays halten. Ich möchte über die drei Arrays in folgender Weise iterieren. Pseudo-Code:

Code:
for(array1){
  String text = array1[i];
  for(array2){
     text += array2[i];
    for(array3){
        text += array3[i];
        executeQuery(text);
    }
  }
}

Aber so richtig komme ich nicht dahinter, da die tiefe der Verschachtelung natürlich dynamisch ist. Es muss gewissermaßen eine Art rekursive Funktion geben, die das automatisch abläuft und den Text zusammensetzt. Aber ich schaffe das einfach nicht.

Kann mir vielleicht jemand helfen.
Danke
Timothy
 
G

Guest

Gast
Mir ist gerade langweilig...
War es so gemeint?
Code:
import java.util.List;
import java.util.Vector;

public class Recursion
{
   private static void execute(String cmd)
   {
      System.out.println(cmd);
   }
   
   private static void execute(StringBuilder buffer, String[][] values, int index)
   {
      if(index < values.length)
      {
         int pos = buffer.length();
         for(String s : values[index])
         {
            execute(buffer.append(s), values, index+1);
            buffer.setLength(pos);
         }
      }
      else
      {
         execute(buffer.toString());
      }
   }
   
   private static void execute(List<String[]> list)
   {
      execute(new StringBuilder(), list.toArray(new String[list.size()][]), 0);
   }
   
   public static void main(String[] args)
   {
      List<String[]> list = new Vector<String[]>(3);
      list.add(new String[] { "a", "bb", "c"});
      list.add(new String[] { "1", "2", "3", "4"});
      list.add(new String[] { "A", "B", "CC", "D", "E"});
      execute(list);
   }
}
 
G

Guest

Gast
Kleine Korrektur, da die Konvertierung in Array ziemlich überflüssig ist.
Code:
  private static void execute(List<String[]> list)
   {
      execute(new StringBuilder(), list, 0);
   }
   
   private static void execute(StringBuilder buffer, List<String[]> list, int index)
   {
      if(index < list.size())
      {
         int pos = buffer.length();
         for(String s : list.get(index))
         {
            execute(buffer.append(s), list, index+1);
            buffer.setLength(pos);
         }
      }
      else
      {
         execute(buffer.toString());
      }
   }
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben