From b4a5d830a3a9c2696e1fd46a64fdcd3e7dccc016 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 14 Apr 2023 22:48:06 +0800 Subject: [PATCH] fix code --- .../hutool/core/collection/ListUtil.java | 25 ++++++++++++------- .../hutool/core/collection/ListUtilTest.java | 7 ++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/collection/ListUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/collection/ListUtil.java index 2d3dc6c88..ef7b37019 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/collection/ListUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/collection/ListUtil.java @@ -12,6 +12,7 @@ package org.dromara.hutool.core.collection; +import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.collection.iter.EnumerationIter; import org.dromara.hutool.core.collection.partition.AvgPartition; import org.dromara.hutool.core.collection.partition.Partition; @@ -21,7 +22,6 @@ import org.dromara.hutool.core.comparator.PinyinComparator; import org.dromara.hutool.core.comparator.PropertyComparator; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.page.PageInfo; -import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.util.ObjUtil; import java.util.*; @@ -268,7 +268,7 @@ public class ListUtil { return new ArrayList<>(0); } return page(list, PageInfo.of(list.size(), pageSize) - .setFirstPageNo(0).setPageNo(pageNo)); + .setFirstPageNo(0).setPageNo(pageNo)); } /** @@ -322,7 +322,7 @@ public class ListUtil { final int total = list.size(); final PageInfo pageInfo = PageInfo.of(total, pageSize); - while(pageInfo.isValidPage()){ + while (pageInfo.isValidPage()) { // 返回数据 pageListConsumer.accept(sub(list, pageInfo.getBeginIndex(), pageInfo.getEndIndexExclude())); pageInfo.nextPage(); @@ -387,11 +387,13 @@ public class ListUtil { } /** - * 反序给定List,会在原List基础上直接修改 + * 反序给定List,会在原List基础上直接修改
+ * 注意此方法不支持不可编辑的列表 * * @param 元素类型 * @param list 被反转的List * @return 反转后的List + * @see Collections#reverse(List) * @since 4.0.6 */ public static List reverse(final List list) { @@ -416,7 +418,12 @@ public class ListUtil { // 不支持clone list2 = new ArrayList<>(list); } - return reverse(list2); + try { + return reverse(list2); + } catch (final UnsupportedOperationException e) { + // 提供的列表不可编辑,新建列表 + return reverse(of(list)); + } } /** @@ -589,8 +596,8 @@ public class ListUtil { } return (list instanceof RandomAccess) - ? new RandomAccessPartition<>(list, size) - : new Partition<>(list, size); + ? new RandomAccessPartition<>(list, size) + : new Partition<>(list, size); } /** @@ -616,8 +623,8 @@ public class ListUtil { } return (list instanceof RandomAccess) - ? new RandomAccessAvgPartition<>(list, limit) - : new AvgPartition<>(list, limit); + ? new RandomAccessAvgPartition<>(list, limit) + : new AvgPartition<>(list, limit); } /** diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/collection/ListUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/collection/ListUtilTest.java index 52f015fd7..a62988afe 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/collection/ListUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/collection/ListUtilTest.java @@ -255,4 +255,11 @@ public class ListUtilTest { final CopyOnWriteArrayList strings = ListUtil.ofCopyOnWrite("a", "b"); Assertions.assertEquals(2, strings.size()); } + + @Test + void reverseNewTest() { + final List view = ListUtil.view(1, 2, 3); + final List reverse = ListUtil.reverseNew(view); + Assertions.assertEquals("[3, 2, 1]", reverse.toString()); + } }