result = new ArrayList<>();
if (null == iter) {
return result;
}
T modified;
- for (final T t : iter) {
- modified = (null == editor) ? t : editor.edit(t);
+ while(iter.hasNext()){
+ modified = (null == editor) ? iter.next() : editor.apply(iter.next());
if (null != modified) {
- result.add(t);
+ result.add(modified);
}
}
return result;
}
/**
- * 过滤集合,此方法在原集合上直接修改
- * 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:
+ * 移除集合中满足条件的所有元素,此方法在原集合上直接修改
+ * 通过实现{@link Predicate}接口,完成元素的移除,可以实现以下功能:
*
*
- * 1、过滤出需要的对象,{@link Filter#accept(Object)}方法返回false的对象将被使用{@link Iterator#remove()}方法移除
+ * 1、移除指定对象,{@link Predicate#test(Object)}方法返回{@code true}的对象将被使用{@link Iterator#remove()}方法移除。
*
*
* @param 集合类型
* @param 集合元素类型
* @param iter 集合
- * @param filter 过滤器接口
+ * @param predicate 过滤器接口
* @return 编辑后的集合
* @since 4.6.5
*/
- public static , E> T filter(final T iter, final Predicate filter) {
+ public static , E> T remove(final T iter, final Predicate predicate) {
if (null == iter) {
return null;
}
- filter(iter.iterator(), filter);
+ remove(iter.iterator(), predicate);
return iter;
}
/**
- * 过滤集合,此方法在原集合上直接修改
- * 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:
+ * 移除集合中满足条件的所有元素,此方法在原集合上直接修改
+ * 通过实现{@link Predicate}接口,完成元素的移除,可以实现以下功能:
*
*
- * 1、过滤出需要的对象,{@link Filter#accept(Object)}方法返回false的对象将被使用{@link Iterator#remove()}方法移除
+ * 1、移除指定对象,{@link Predicate#test(Object)}方法返回{@code true}的对象将被使用{@link Iterator#remove()}方法移除。
*
*
* @param 集合元素类型
* @param iter 集合
- * @param filter 过滤器接口,删除{@link Filter#accept(Object)}为{@code false}的元素
+ * @param predicate 过滤器接口,删除{@link Predicate#test(Object)}为{@code true}的元素
* @return 编辑后的集合
- * @since 4.6.5
+ * @since 6.0.0
*/
- public static Iterator filter(final Iterator iter, final Predicate filter) {
- if (null == iter || null == filter) {
+ public static Iterator remove(final Iterator iter, final Predicate predicate) {
+ if (null == iter || null == predicate) {
return iter;
}
while (iter.hasNext()) {
- if (false == filter.test(iter.next())) {
+ if (predicate.test(iter.next())) {
iter.remove();
}
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/dfa/WordTree.java b/hutool-core/src/main/java/cn/hutool/core/text/dfa/WordTree.java
index 157c26e44..5c435c138 100755
--- a/hutool-core/src/main/java/cn/hutool/core/text/dfa/WordTree.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/dfa/WordTree.java
@@ -223,7 +223,7 @@ public class WordTree extends HashMap {
*/
public List matchAll(final String text, final int limit, final boolean isDensityMatch, final boolean isGreedMatch) {
final List matchAllWords = matchAllWords(text, limit, isDensityMatch, isGreedMatch);
- return CollUtil.map(matchAllWords, FoundWord::toString, true);
+ return CollUtil.map(matchAllWords, FoundWord::toString);
}
/**
diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
index 5c1eed21e..1d831cab4 100755
--- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
@@ -2,6 +2,7 @@ package cn.hutool.core.collection;
import cn.hutool.core.comparator.ComparableComparator;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Console;
import cn.hutool.core.map.Dict;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.StrUtil;
@@ -253,7 +254,8 @@ public class CollUtilTest {
final Dict v2 = Dict.create().set("age", 13).set("id", 15).set("name", "李四");
final ArrayList list = ListUtil.of(v1, v2);
- final List