2016-08-09 114 views
-2

我的琴絃LINKSET一個ArrayList的包含以下項目匹配模式在java中

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

我有以下含

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

我將列出模式2的另一個列表喜歡匹配我列表pattern2中列表LinkSet的每個元素模式,並從LinkSet中替換匹配位置找到的元素。其結果是,我想有表有相似的列表:

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

從列表的這個新的列表,0"0,3"從原來的列表中的位置,10,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], 

似乎覆蓋模式2每個循環

+1

_「它不給我,我想有什麼。」 _ - 嗯,這是什麼給你,你想什麼呢?您到目前爲止進行了哪些排查?你是否已經在調試器中檢查了代碼?不完整的問題被認爲是無關緊要的。請訪問[幫助]並閱讀[問]。 –

回答

0

貌似問題是,你的「模式」的工作,並改變它的腸子環內,而不是存儲您的結果在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