2012-10-10 68 views
1

如果我有兩個類中的常量:'轉移' StringBuilder的內容到一個新的ArrayList中的Java

List<String> workingList= new ArrayList<String>(); 
StringBuilder holder = new StringBuilder(50); 

都內居住,稱之爲類StringParser和主要方法readStuff() ...

public class StringParser{ 

public void readStuff(){ 

//parsing logic and adding <String> elements to 
//said workingList... 

}//end of method readStuff 

接着是我檢查workingList內容的方法...

public String someReaderMethod() 
{ 
    int ind = 0; 
    for(int i = 0; i < workingList.size();i++) 
    { 
    if(workingList.get(i).contains(someExp)) 
    { 
     workingList.remove(ind); 
     holder.append(workingList.get(i).toString()); 
} 
else 
{ 
    ++ind; 
} 
    } 
    return holder.toString();  

}

...因爲StringBuilder持有者現在包含什麼workingList已刪除,是有辦法,我可以「通」了的StringBuilder到一個新的ArrayList內容是什麼?

回答

0

是否有你想使用StringBuilder的原因?您可以直接將值插入到新的ArrayList中。我認爲你可以用更簡單的方式做到這一點。

List<String> discardedList = new ArrayList<String>(); 

public void readStuff() {} 

public static List<String> someReaderMethod() 
{ 
    for(int i = 0; i < workingList.size(); i++) 
    { 
    if(workingList.get(i).contains(someExp)) 
    { 
     discardedList.add(workingList.get(i)); 
     workingList.remove(i); 
    } 
    } 
    return discardedList; 
} 
+0

,這使得更有意義;我早些時候嘗試過,我可以宣誓它會拋出異常,但我會再試一次,謝謝! – OcelotXL

1

您將需要一個deliminator解析字符串,然後您可以使用Split方法並將String []轉換爲ArrayList。

holder.append(tempList.get(i)); 
holder.append(";");//Deliminator 

現在,當你要使用它,你需要做的

String[] strings =holderString.split(";"); 
List<String> list = Arrays.asList(strings); 
+0

@AmitD但在return語句之後並不是所有代碼都不可達? – OcelotXL

+0

@ AmitD從來沒有想過大聲笑,最初沒有出現xP – OcelotXL

0

雖然附加的列表元素,你StringBuilder對象,需要追加額外的分隔符後,每追加..

稍後,您可以在該分隔符中將String分成StringBuilder,然後將如此獲得的字符串數組轉換爲ArrayList ..

+0

coolbeans謝謝Rohit! – OcelotXL

+0

@madrush ..不客氣..嘗試一下是否可以解決它.. –

相關問題