我被迫在 JavaFx 应用中使用ObservableList
,我的List
必须包含最多1000个项目。
所以我考虑使用 FIFO系统,但我只看到这个解决方案:
observableListData.add(...) //1001 item
if (observableListData.size()>1000){
observableListData.remove(0); // 1000 item
}
我在此列表中添加了很多项目,所以我不认为这是限制ObservableList
大小的最佳方法,是否有另一种方法0}强>?
编辑:
回答你的一些问题:
ObservableList
,因为它链接到ListView
。答案 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语句。