ObservableList
रों FXCollections
वर्ग से स्थिर कारखानों के साथ बनाया जाता है।
आप निम्न कार्य कर सकते हैं, जो पहले स्ट्रीम को List
में एकत्र करता है और फिर इसे ObservableList
के अंदर लपेटता है।
ObservableList<String> newList =
list.stream()
.filter(x -> x.startsWith("a"))
.collect(Collectors.collectingAndThen(toList(), l -> FXCollections.observableArrayList(l)));
(जो दुर्भाग्य से पर्याप्त ग्रहण मंगल ग्रह 4.5.1 पर संकलन नहीं करता, लेकिन javac
1.8.0_60 पर ठीक संकलित)।
इसके लिए एक कस्टम कलेक्टर बनाने की एक और संभावना है। इसका लाभ यह है कि पहले List
का उपयोग करने की आवश्यकता नहीं है। तत्व सीधे ObservableList
के अंदर एकत्र किए जाते हैं।
ObservableList<String> newList =
list.stream()
.filter(x -> x.startsWith("a"))
.collect(Collector.of(
FXCollections::observableArrayList,
ObservableList::add,
(l1, l2) -> { l1.addAll(l2); return l1; })
);
लुइस Wasserman in the comments द्वारा बताया गया है, यह पिछले अभिव्यक्ति अधिक बस toCollection
का उपयोग कर फिर से लिखा जा सकता है:
ObservableList<String> newList =
list.stream()
.filter(x -> x.startsWith("a"))
.collect(Collectors.toCollection(FXCollections::observableArrayList));
तुम सिर्फ यह किया, था ना? – assylias
@assylias नोप, 'ObservableArrayList' के लिए कोई कन्स्ट्रक्टर नहीं है (यह वास्तव में कक्षा नहीं है) – Tunaki