首页 > 解决方案 > 使用 toString 拆分 observableList

问题描述

所以我正在尝试使用 toString 拆分 observableList:

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

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

标签: javajavafx

解决方案


listeMedLag.toString()

根据列表的元素创建一个字符串。这有很多问题。该ObservableList实现可能不会完全创建您期望的字符串输出。通常也有{}包装内容。

同样,在对象的方法返回的对象上调用方法通常不会对原始对象产生影响。有例外,但它们已记录在案。(例如List.subListList.iterator)。String但它是不可变的,它与列表没有任何关系。调用split字符串只会导致String[]创建一个包含部分字符串的新数组。它对字符串对象没有影响,对列表也没有影响。

如果您打算拆分 a 的每个元素List<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);

推荐阅读