Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用toString拆分可观察列表_Java_Javafx - Fatal编程技术网

Java 使用toString拆分可观察列表

Java 使用toString拆分可观察列表,java,javafx,Java,Javafx,因此,我尝试使用toString拆分一个可观察列表: listeMedLag = DataHandler.hentDataCupLag("src/arrangementer.csv",2,listeMedLag,cup); //output: Skjeberg&Borgen listeMedLag.toString().split("&"); lagSomErMed.setItems(listeMedLag); //output: Skjeberg&Borgen 有人知

因此,我尝试使用toString拆分一个可观察列表:

listeMedLag = DataHandler.hentDataCupLag("src/arrangementer.csv",2,listeMedLag,cup); //output: Skjeberg&Borgen
listeMedLag.toString().split("&");
lagSomErMed.setItems(listeMedLag); //output: Skjeberg&Borgen

有人知道为什么列表没有拆分吗?

您需要将拆分后的字符串存储到局部变量中。比如:

String[] split =  = listeMedLag.toString().split("&");
lagSomErMed.setItems(split);

split
方法签名:

public String[] split(String regex)
基于列表的元素创建字符串。这有很多问题。
ObservableList
实现可能无法准确创建您期望的字符串输出。通常还有
{}
包装内容

对对象的方法返回的对象调用方法通常不会对原始对象产生影响。也有例外情况,但有记录在案。(例如
List.subList
List.iterator
)<但是code>String是不可变的,它与列表没有任何连接。对字符串调用
split
,只会创建一个新的
string[]
数组,其中包含字符串的部分内容。它对字符串对象没有影响,对列表也没有影响

如果您打算拆分
列表中的每个元素
并用所有这些元素填充列表,我建议您创建一个包含所有这些元素的新列表,然后将内容分配给目标列表:

List<String> inputList = ...
ObservableList<String> outputList = FXCollections.observableArrayList();

// fill new list with elements of original list split at "&"
inputList.stream().map(s -> s.split("&")).forEach(outputList::addAll);

// do something with new list
listView.setItems(outputList);
列表输入列表=。。。
ObservableList outputList=FXCollections.observableArrayList();
//使用在“&”处拆分的原始列表元素填充新列表
inputList.stream().map(s->s.split(&)).forEach(outputList::addAll);
//用新列表做些什么
setItems(outputList);

您可以使用
flatMap
将列表转换为具有不同项数的列表

        list.setAll(list.stream()
            .flatMap(item -> Arrays.asList(item.split("&")).stream())
            .collect(Collectors.toList()));

这会将
列表的内容设置为新项目,因此如果您有侦听器,它们可能会被大量解雇。

使用
lagSomErMed.setItems(listedLag.toString().split(&))<代码>listedlag.toString().split(“&”)返回一个不同的字符串数组,您没有将其分配给任何对象。
List<String> inputList = ...
ObservableList<String> outputList = FXCollections.observableArrayList();

// fill new list with elements of original list split at "&"
inputList.stream().map(s -> s.split("&")).forEach(outputList::addAll);

// do something with new list
listView.setItems(outputList);
        list.setAll(list.stream()
            .flatMap(item -> Arrays.asList(item.split("&")).stream())
            .collect(Collectors.toList()));