【发布时间】:2018-12-15 00:15:44
【问题描述】:
我需要创建一个没有另一个数组列表元素的数组列表,但我需要这个新的数组列表来保持更新。例如,旧的arraylist的一个元素被删除,新的也被删除。
但是我并不想去掉两个arraylist的元素,只去掉旧的,以免有太多代码
(我的方法“showPeople”每 1 秒更新一次)
我的代码:
ArrayList<Person> personList = new ArrayList<>();
private void method(){
personList.add(new People("Name"))
}
private void showPeople(){
ArrayList<Person> newPersonList =
new ArrayList<>(personList.stream()
.filter(person -> !person.getName().equals("Test"))
.collect(Collectors.toList()))
for (int i = 0; i < newPersonList.size(); i++){
gui.show(newPersonList.get(i).getName());
}
}
问题是当我创建新的arraylist并从旧的删除一个项目时,新的没有更新
【问题讨论】:
-
难道你不能只保留一个数组列表,并在每次需要获取条目时过滤掉你不想要的对象吗?您应该解释原因,我认为肯定有更好的解决方案来解决您的问题。
-
我已经这样做了,但是没有用
-
您调用的方法的顺序是什么?因为这里看起来每次调用 showPeople 时都会使用 personList 的 current 元素。因此,如果您从中删除或添加一些项目,当您稍后调用 showPeople 时,也会出现这样的更改。顺便说一句,您也可以将 .collect 替换为
.forEach(p -> gui.show(p.getName())),而不是在newPersonList中收集流