1

如果我有两个类常量:

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

4

3 回答 3

1

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

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

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

String[] strings =holderString.split(";");
List<String> list = Arrays.asList(strings);
于 2012-10-10T07:28:57.780 回答
1

您是否有理由要使用 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;
}
于 2012-10-10T08:15:10.433 回答
0

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

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

于 2012-10-10T07:32:19.680 回答