限制ObservableList的大小

时间:2015-08-10 14:58:19

标签: java list javafx observablelist

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

所以我考虑使用 FIFO系统,但我只看到这个解决方案:

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

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

编辑:

回答你的一些问题:

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

3 个答案:

答案 0 :(得分:1)

您可以通过FXCollections.observableList扩展ModifiableObservableListBase,这是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); } } 返回的收集基础:

way
  (around:70, 51.0483, 13.7495)
  [maxspeed];
(._;>;);
out;

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

答案 1 :(得分:0)

没有办法告诉ObservableList本身限制它的大小。

以下是该课程详情和所有方法的链接:

https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableList.html

您能告诉我们您想要制作什么,为什么需要限制尺寸?也许有人会告诉你更好的解决方案。

答案 2 :(得分:0)

如何对它进行子类化并覆盖add方法呢?在重写方法中使用if语句。