【问题标题】:'transferring' StringBuilder contents to a new ArrayList in java将 StringBuilder 内容“转移”到 java 中的新 ArrayList
【发布时间】:2012-09-30 14:46:19
【问题描述】:

如果我有两个类常量:

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

【问题讨论】:

    标签: java string for-loop arraylist constants


    【解决方案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;
    }
    

    【讨论】:

    • 这更有意义;我之前尝试过,我可以发誓它抛出了异常,但我会再试一次,谢谢!
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我去更正了你的拼写,但仔细检查了谷歌,并学会了一个新的(尽管是虚构的)单词 :) "[portmanteau, delimiter + exclude] 使用的字符串或模式将文本分隔到字段中,但它本身已从结果字段列表中删除。”来自eps.mcgill.ca/jargon/html/entry/deliminator.html
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      相关资源
      最近更新 更多