解决FilterIter 类中构造器filter 传入null 无法进行迭代器迭代

This commit is contained in:
chao.wang 2022-08-29 10:24:18 +08:00
parent ef0fc738f1
commit 030a27a0df
2 changed files with 32 additions and 1 deletions

View File

@ -84,7 +84,7 @@ public class FilterIter<E> implements Iterator<E> {
private boolean setNextObject() {
while (iterator.hasNext()) {
final E object = iterator.next();
if (null != filter && filter.accept(object)) {
if (null == filter || filter.accept(object)) {
nextObject = object;
nextObjectSet = true;
return true;

View File

@ -0,0 +1,31 @@
package cn.hutool.core.collection;
import org.junit.Test;
import java.util.Iterator;
/**
* {@link FilterIter} 单元测试
* @author chao.wang
*/
public class FilterIterTest {
@Test
public void checkFilterIter() {
Iterator<String> it = ListUtil.of("1", "2").iterator();
// filter 为null
FilterIter<String> filterIter = new FilterIter<>(it, null);
while (filterIter.hasNext()) {
System.out.println(filterIter.next());
}
System.out.println();
it = ListUtil.of("1", "2").iterator();
// filter 不为空
filterIter = new FilterIter<>(it, (key) -> key.equals("1"));
while (filterIter.hasNext()) {
System.out.println(filterIter.next());
}
}
}