将StringBuilder内容“传递”到java中的新ArrayList

时间:2012-10-10 07:26:17

标签: java string for-loop arraylist constants

如果我有两个类常量:

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

3 个答案:

答案 0 :(得分:1)

您需要deliminator来解析字符串,然后您可以使用Split方法并将String []转换为ArrayList。

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

现在当你必须使用它时,你需要做

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

答案 1 :(得分:0)

在将List元素附加到StringBuilder对象时,您需要在每次追加后追加一个额外的分隔符。

稍后,您可以在该分隔符上的String中拆分StringBuilder,然后将您获得的String数组转换为ArrayList ..

答案 2 :(得分: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;
}