将多行字符串强制转换为Java中的List <string>

时间:2017-07-14 11:19:27

标签: java arrays string javafx

我的应用程序中某些Model类的输出之一是以下格式的多行字符串:

System.out.println(str); //output:

row1
row2
row3
row4

字符串中可能有许多值/行,具体取决于输出,因此str字符串仅用于示例目的。 如果可能的话,我希望将此字符串强制转换为List<String>,因此打印输出将显示为:

List<String> listStr = new ArrayList<String>();
System.out.println(listStr); //output:

[row1, row2, row3, row4]

我尝试了许多不同的方法,例如:

for (Model modelRow : modelTableView.getItems()) {
            str = modelRow.getInfo();
            System.out.println(str);
            listStr = new ArrayList<String>(Arrays.asList(str.split("\n")));
}

在大多数情况下,只返回最后一个值,或者我得到所有值的单个数组,例如:。

[row1]
[row2]
[row3]
[row4]

那么,我怎样才能在一个列表中只拥有[row1, row2, row3, row4]的所有值?我错过了什么?任何帮助或指示将不胜感激。

修改

我避免使用带有str.split()方法的分隔符,并直接使用以下内容查询firstColumnmodelTableView中的单元格:

for (int i=0; i < modelTableView.getItems().size(); i++) {
            str = firstColumn.getCellData(i);
            System.out.println(str);
            listStr = Arrays.asList(str);
}

代码不再返回NullPointerException并允许继续,但listStr的输出只是原始str字符串的最后一个元素:

System.out.println(listStr);
//output:
[row4]

我应该在循环中更改迭代器吗?什么可能出错的其他想法?

1 个答案:

答案 0 :(得分:5)

尝试这样的事情:

List<String> listStr = new ArrayList();
for (Model modelRow : modelTableView.getItems()) {
   str = modelRow.getInfo();
   System.out.println(str);
   listStr.addAll(Arrays.asList(str.split("\n")));
}

修改

如果您只想以打印List的方式打印数组,可以使用:

Arrays.toString( array )