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

sim*_*tim 0 java arrays string javafx

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

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

row1
row2
row3
row4
Run Code Online (Sandbox Code Playgroud)

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

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

[row1, row2, row3, row4]
Run Code Online (Sandbox Code Playgroud)

我试过很多不同的方法,例如:

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

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

[row1]
[row2]
[row3]
[row4]
Run Code Online (Sandbox Code Playgroud)

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

编辑

我避免使用分离器以一个str.split()方法和我查询的细胞中firstColumn的内modelTableView直接使用以下内容:

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

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

System.out.println(listStr);
//output:
[row4]
Run Code Online (Sandbox Code Playgroud)

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

Usa*_*oto 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")));
}
Run Code Online (Sandbox Code Playgroud)

编辑

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

Arrays.toString( array )
Run Code Online (Sandbox Code Playgroud)