gpt4 book ai didi

java - 限制 ObservableList 的大小

转载 作者:行者123 更新时间:2023-12-01 11:15:07 24 4
gpt4 key购买 nike

我被迫在 JavaFx 应用程序中使用 ObservableList,并且我的 List 必须最多包含 1000 个项目。

所以我正在考虑使用先进先出系统,但我只看到这个解决方案:

observableListData.add(...) //1001 item 
if (observableListData.size()>1000){
observableListData.remove(0); // 1000 item
}

我在此列表中添加了很多项目,因此我认为这不是限制 ObservableList 大小的最佳方法,是否有另一种方法可以

编辑:

回答您的一些问题:

  • 我需要一个 ObservableList,因为它链接到 ListView
  • 我必须使用 FIFO,因为我要显示此列表中的项目

最佳答案

您可以扩展ModifiableObservableListBase ,这是集合的基础,由 FXCollections.observableList 返回,方式如下:

public class ObservableLimitedList<T> extends ModifiableObservableListBase<T> {
private LinkedList<T> list;
private int maxSize;

public ObservableLimitedList(int maxSize) {
this.maxSize = maxSize;
list = new LinkedList<>();
}

@Override
public boolean add(T element) {
boolean result = super.add(element);
if (size() > maxSize) {
remove(0);
}
return result;
}

// delegate overrides:

@Override
public T get(int index) {
return list.get(index);
}

@Override
public int size() {
return list.size();
}

@Override
protected void doAdd(int index, T element) {
list.add(index, element);
}

@Override
protected T doSet(int index, T element) {
return list.set(index, element);
}

@Override
protected T doRemove(int index) {
return list.remove(index);
}
}

以下是此实现的测试:https://ideone.com/MMhnS6

关于java - 限制 ObservableList 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com