diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index 2a3a7ec1e..196393a4e 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -1066,12 +1066,17 @@ public class CollUtil { * @since 5.3.5 */ public static List map(final Iterable collection, final Function mapper, final boolean ignoreNull) { + if (ignoreNull) { + return StreamUtil.of(collection) + // 检查映射前的结果 + .filter(Objects::nonNull) + .map(mapper) + // 检查映射后的结果 + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } return StreamUtil.of(collection) - // 检查映射前的结果 - .filter((e) -> (false == ignoreNull) || null != e) .map(mapper) - // 检查映射后的结果 - .filter((e) -> (false == ignoreNull) || null != e) .collect(Collectors.toList()); } diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java index 10ac0d8b0..83c0165a6 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java @@ -433,7 +433,7 @@ public class ListUtil { * @param element 新元素 * @param paddingElement 填充的值 * @return 原List - * @since 5。8.4 + * @since 5.8.4 */ public static List setOrPadding(final List list, final int index, final T element, final T paddingElement) { Assert.notNull(list, "List must be not null !"); diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java index 0df22861f..4475771a3 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java @@ -1036,15 +1036,14 @@ public class ArrayUtil extends PrimitiveArrayUtil { if (null == array) { return null; } - + final int length = Array.getLength(array); if (index < 0) { - index += Array.getLength(array); + index += length; } - try { - return (T) Array.get(array, index); - } catch (final ArrayIndexOutOfBoundsException e) { + if (index < 0 || index >= length) { return null; } + return (T) Array.get(array, index); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/map/GraphTest.java b/hutool-core/src/test/java/cn/hutool/core/map/GraphTest.java index ae031c59f..0ebddb5f8 100644 --- a/hutool-core/src/test/java/cn/hutool/core/map/GraphTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/map/GraphTest.java @@ -147,7 +147,7 @@ public class GraphTest { Assert.assertEquals(asSet(2, 0), graph.getAdjacentPoints(3)); } - + @SafeVarargs private static Set asSet(T... ts) { return new LinkedHashSet<>(Arrays.asList(ts)); }