Java筛选器使用一个谓词,但不使用另一个谓词

Java筛选器使用一个谓词,但不使用另一个谓词,java,filter,predicate,Java,Filter,Predicate,救命啊!这毫无意义。 我有一个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

救命啊!这毫无意义。 我有一个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 void filter(Predicate您有两次
item=item。接下来
,一次在for循环声明中,一次在内部。因此您跳过了一半的项

for (MyItem<T> item=head; item!=null; item=item.next) {
    if(predicate.test(item.key))
        remove(item.key);
    // item = item.next; ???
}
for(MyItem item=head;item!=null;item=item.next){
if(谓词测试(项键))
移除(项.键);
//item=item.next???
}

您有两次
item=item。下一次
,一次在for循环声明中,一次在内部。因此您跳过了一半的项

for (MyItem<T> item=head; item!=null; item=item.next) {
    if(predicate.test(item.key))
        remove(item.key);
    // item = item.next; ???
}
for(MyItem item=head;item!=null;item=item.next){
if(谓词测试(项键))
移除(项.键);
//item=item.next???
}

问题很可能来自这样一个事实,即在
过滤器
方法中跳过循环中的每一秒元素。调用
item=item。然后在其中调用两次
,作为循环的“增量”(循环定义的第三部分),然后在每次迭代结束时调用

public void filter(Predicate<? super T> predicate) {
    for (MyItem<T> item=head; item!=null; item=item.next) { //<- here
        if(predicate.test(item.key))
            remove(item.key);
        item = item.next; //<- here
    }
}

public void filter(Predicate问题很可能来自这样一个事实,即在
filter
方法中跳过循环中的每一秒元素。调用
item=item。然后在其中调用两次
,作为循环的“增量”(循环定义的第三部分),然后在每次迭代结束时调用

public void filter(Predicate<? super T> predicate) {
    for (MyItem<T> item=head; item!=null; item=item.next) { //<- here
        if(predicate.test(item.key))
            remove(item.key);
        item = item.next; //<- here
    }
}

public void filter(非常感谢,我现在意识到我的问题有多愚蠢!非常感谢,我现在意识到我的问题有多愚蠢!