2016-08-09 2 views
-2

ich eine Arraylist von Strings LinkSet haben, die folgende Elemente enthältMatching-Muster in Liste der Liste in java

["0,3","0,13","0,28","12,3","13,3","28,12"] 

Ich habe eine andere Liste der Liste pattern2 mit der folgenden enthält

[[0,3], [0,13,3], [0,28,12,3]] 

würde ich Ich mag es, jedes Elementmuster der Liste LinkSet in meiner Liste pattern2 zu vergleichen und das gefundene Element durch die Position der Übereinstimmung von LinkSet zu ersetzen. Als Ergebnis würde ich wie eine Liste der Liste haben mag:

[[0],[1,4],[2,5,3]] 

Aus dieser neuen Liste der Liste, ist 0 die Position der "0,3" aus der ursprünglichen Liste, 1 ist die Position der 0,13 in der ursprüngliche Liste und so weiter. Ich habe versucht, dieses:

String pattern2=""; 
    for (int k=0; k<graph.LinkSet.size();k++) 
    { 
     String temp="" 
     for(int m=0;m<pattern.size();m++) 
     { 
      temp=pattern.get(m).toString(); 

     if (temp.contains("[["+LinkSet.get(k)+"],")) 
     { 
      pattern=pattern+"[["+k+"],"; 
     } 
     else if (temp.contains("["+LinkSet.get(k)+"],")) 
     { 
      pattern=pattern+"["+k+"],"; 
     } 

     else if (temp.contains(", ["+LinkSet.get(k))) 
     { 
      pattern=pattern+", ["+k+","; 
     } 

     else if (temp.contains(", ["+LinkSet.get(k))) 
     { 
      pattern=pattern+", ["+k+","; 
     } 
    } 
     } 
    //System.out.println("after"+temp); 
    System.out.println("pattern"+pattern2); 

Aber es gibt mir nicht, was ich haben möchte. Es gibt mir

,[,[[[1,2,3], 

es pattern2 für jede Schleife

+1

_ „es mich nicht geben, was ich haben möchte.“ _ - na ja, was es Ihnen nicht geben, und was würden Sie haben? Was haben Sie bisher unternommen, um Fehler zu beheben? Hast du den Code in deinem Debugger durchgegangen? Unvollständige Fragen werden außerhalb des Themas behandelt. Bitte besuchen Sie die [Hilfe] und lesen [fragen]. –

Antwort

0

Sieht aus wie das Problem ist, überschrieben werden scheint, dass Sie auf „Muster“ arbeiten und es im Inneren des innner-Schleife zu ändern, anstatt Ihre Ergebnisse zu speichern, in pattern2 ... Aber das erklärt deine Ergebnisse nicht. Auch du machst unnötigerweise mit den Klammern herum. Und Sie müssen die Schleifen wechseln, um das gewünschte Ergebnis zu erhalten.

Wie wäre es damit:

String result = ""; 
// Loop over pattern 
for (int m = 0; m < pattern.size(); m++)  { 
    String patternResult = ""; 
    String patternToBeMatched = pattern.get(m); 
    // Loop over source 
    for (int k=0; k<graph.LinkSet.size(); k++) { 
     String toAnalyse = graph.LinkSet.get(k); 
     if (toAnalyse.contains(patternToBeMatched){ 
      patternResult = patternResult + k + ", "; 
     } 
    } 
    // Remove additional ", " if not empty and set brackets 
    if (patternResult.length() > 0){ 
     patternResult = "[" + patternResult.substring(0, patternResult.length() - 2) + "]"; 
    } 
    result = result + patternResult; 
} 
result = "[" + result + "]"; 
+0

Ich bin mir nicht sicher warum, aber mein Ergebnis ist nur [] – user3841581