Filter ListChangeListener,JavaFX

Filter ListChangeListener,JavaFX,filter,javafx,iteration,observablelist,Filter,Javafx,Iteration,Observablelist,我有一个关于可观察列表上的过滤器的问题。我的代码运行得很好,但我觉得太慢了。这是因为我在应用程序开始时加载了40000个订单,之后应用程序一直接收订单,但现在我只有在初始加载时遇到问题。我的主要问题是,我的原始订单集的副本相当慢,为什么?因为我在changeListener中拥有的代码,我认为这可能会更好。。但我还没有找到解决办法。这是我的代码示例 public MainController() { filteredData.addAll(Repository.masterObserva

我有一个关于可观察列表上的过滤器的问题。我的代码运行得很好,但我觉得太慢了。这是因为我在应用程序开始时加载了40000个订单,之后应用程序一直接收订单,但现在我只有在初始加载时遇到问题。我的主要问题是,我的原始订单集的副本相当慢,为什么?因为我在changeListener中拥有的代码,我认为这可能会更好。。但我还没有找到解决办法。这是我的代码示例

public MainController()
{
    filteredData.addAll(Repository.masterObservableList);

    Repository.masterObservableList.addListener(new ListChangeListener<OrderVo>() 
    {
            @Override
            public void onChanged(ListChangeListener.Change<? extends OrderVo> change) 
            {               

                filteredData.clear();                                                              
                for (OrderVo o : Repository.masterObservableList) 
                    filteredData.add(o);
            }
        });
    }    
}
public主控制器()
{
filteredData.addAll(Repository.masterobserveList);
Repository.masterobserveList.addListener(新的ListChangeListener()
{
@凌驾

public void onChanged(ListChangeListener.Change每次主观察列表更改时,您的算法都会强制重置filteredData的所有元素。 这太详尽了,因为在添加或删除每个项目时都会触发侦听器。 也许只添加或删除已更改的元素更好

 Repository.masterObservableList.addListener(new ListChangeListener<OrderVo>() 
    {
            @Override
            public void onChanged(ListChangeListener.Change<? extends OrderVo> change) 
            {               

                while(change.next()) {
                    if(change.wasAdded()) {
                        List added =  change.getAddedSubList();
                        //add those elements to your data
                    }
                    if(change.wasRemoved()) {
                        List removed = change.getRemoved();
                        //remove those elements from your data
                    }
                }
            }
        });
    }   
Repository.masterobserveList.addListener(新的ListChangeListener())
{
@凌驾
public void onChanged(ListChangeListener.ChangeSolved..filteredData.clear();filteredData.addAll((observeList)change.getList());完成!!:D