栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将可观察集转换为可观察列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将可观察集转换为可观察列表

在表中进行编辑是否会按预期更新基础集?

不,因为,您正在复制集合:

new ArrayList<E>(pojo.getObservableSet())

是这样做的“正确”方法吗?

我认为正确的方法是不这样做。

Set
不是
List
,反之亦然。两者都有特定的矛盾。例如,列表是有序的,并且集合不包含重复的元素。

而且,也

FXCollections
都没有
Bindings
提供这种东西。

我希望将集合保留为一组以强制执行唯一性

我想您可以编写一个custom

ObservableList
,例如
Parent::children
具有类似的行为。
IllegalArgumentException
如果添加了重复的子项,则抛出。如果您查看源代码,将会看到它是一个
VetoableListDecorator
扩展。您可以编写自己的:

import java.util.HashSet;import java.util.List;import java.util.Set;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import com.sun.javafx.collections.VetoableListDecorator;public class CustomObservableList<E> extends VetoableListDecorator<E> {    public CustomObservableList(ObservableList<E> decorated) {        super(decorated);    }    @Override    protected void onProposedChange(List<E> toBeAdded, int... indexes) {        for (E e : toBeAdded) { if (contains(e)) {     throw new IllegalArgumentException("Duplicament element added"); }        }    }}class Test {    public static void main(String[] args) {        Object o1 = new Object();        Object o2 = new Object();        Set<Object> set = new HashSet<Object>();        set.add(o1);        CustomObservableList<Object> list = new CustomObservableList<Object>(FXCollections.observableArrayList(set));        list.add(o2);        list.add(o1); // throw Exception    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428576.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号