2016-08-09 2 views
-2

У меня есть ArrayList строк группы каналов, который содержит следующие элементыMatching модель в Списке Списка в Java

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

У меня есть еще один список список ТЕСТ2 со следующим содержащим

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

Я бы например, чтобы сопоставить каждый шаблон элемента списка LinkSet в моем списке pattern2 и заменить элемент, найденный положением соответствия из LinkSet. В результате, я хотел бы иметь список список с как:

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

Из этого нового списка списка 0 является положение "0,3" из первоначального списка, 1 позиция 0,13 в оригинальный список и т. д. Я попытался это:

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); 

Но это не дает мне то, что я хотел бы иметь. Это дает мне

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

, кажется перезаписать pattern2 для каждого цикла

+1

_ «это не дает мне то, что я хотел бы иметь.» _ - ну, что это дает вам, и что вы хотели бы иметь? Что вы сделали до сих пор для устранения неполадок? Вы перешли код в своем отладчике? Неполные вопросы считаются вне темы. Пожалуйста, посетите [помощь] и прочитайте [ask]. –

ответ

0

выглядит как проблема в том, что вы работаете на «шаблон» и изменить его внутри innner петли вместо того, чтобы хранить свои результаты в pattern2 ... Но это не объясняет ваши результаты. Кроме того, вы бесполезны с помощью скобок. И вам нужно переключить петли, чтобы получить нужный результат.

Как об этом:

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

Я не уверен, почему, но мой результат только [] – user3841581

Смежные вопросы