【发布时间】:2021-02-04 12:19:30
【问题描述】:
帮助!这一点意义都没有。 我有一个 Java 集合和一个过滤这个集合的方法。
public void filter(Predicate<? super T> predicate) {
for (MyItem<T> item=head; item!=null; item=item.next) {
if(predicate.test(item.key))
remove(item.key);
item = item.next;
}
}
然后,当我使用一个谓词运行它时,它就起作用了。
public static void main(String[] args) {
MySet<Integer> set = new MySet<>();
for(int i=0; i<20; i++) {
set.add(i);
}
set.filter(x->x%2==0);
MyItem<Integer> item = set.head;
for(int i=0; i<10; i++) {
System.out.println(item.key);
item = item.next;
}
}
它正确输出了从 1 到 19 的所有奇数。
但是,如果我将谓词更改为 x->x%2==1,它不会输出 0 到 18 的所有偶数,而是输出 0 到 9 的 所有 数字。
为什么这甚至可能???
提前致谢!
【问题讨论】: