Java 使用toString拆分可观察列表
因此,我尝试使用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 有人知
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()));