Java筛选器使用一个谓词,但不使用另一个谓词
救命啊!这毫无意义。 我有一个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
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(非常感谢,我现在意识到我的问题有多愚蠢!非常感谢,我现在意识到我的问题有多愚蠢!