From e3ff5a2ab360a7e8689ff0e7af37f5fd5c06ebf0 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 14 Feb 2025 16:57:45 +0800 Subject: [PATCH] =?UTF-8?q?CollectionTools#isNotEmpty=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20guava=20=E7=9A=84=20Table=E3=80=81Multimap=E3=80=81Multiset?= =?UTF-8?q?=20=E5=92=8C=20RangeSet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/collection/CollectionTools.java | 65 +++++++++++++++++-- .../collection/CollectionToolsTests.java | 48 ++++++++++++++ 2 files changed, 108 insertions(+), 5 deletions(-) diff --git a/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java b/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java index f5e671b..2f0c776 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/collection/CollectionTools.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,11 @@ import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.RangeSet; +import com.google.common.collect.Table; + /** * 集合工具类 * @@ -33,9 +38,9 @@ import javax.annotation.Nullable; */ public class CollectionTools { - // TODO [添加] 新增其它集合类型,如 guava 的扩展集合等 - - // isEmpty + // ================================ + // #region - isEmpty + // ================================ public static boolean isEmpty(@Nullable Collection collection) { return collection == null || collection.isEmpty(); @@ -45,7 +50,29 @@ public class CollectionTools { return map == null || map.isEmpty(); } - // isNotEmpty + public static boolean isEmpty(@Nullable Table table) { + return table == null || table.isEmpty(); + } + + public static boolean isEmpty(@Nullable Multimap map) { + return map == null || map.isEmpty(); + } + + public static boolean isEmpty(@Nullable Multiset set) { + return set == null || set.isEmpty(); + } + + public static boolean isEmpty(@Nullable RangeSet set) { + return set == null || set.isEmpty(); + } + + // ================================ + // #endregion - isEmpty + // ================================ + + // ================================ + // #region - isNotEmpty + // ================================ public static boolean isNotEmpty(@Nullable Collection collection) { return collection != null && !collection.isEmpty(); @@ -55,6 +82,30 @@ public class CollectionTools { return map != null && !map.isEmpty(); } + public static boolean isNotEmpty(@Nullable Table table) { + return table != null && !table.isEmpty(); + } + + public static boolean isNotEmpty(@Nullable Multimap map) { + return map != null && !map.isEmpty(); + } + + public static boolean isNotEmpty(@Nullable Multiset set) { + return set != null && !set.isEmpty(); + } + + public static boolean isNotEmpty(@Nullable RangeSet set) { + return set != null && !set.isEmpty(); + } + + // ================================ + // #endregion - isNotEmpty + // ================================ + + // ================================ + // #region - nullToEmpty + // ================================ + @Nonnull public static List nullToEmptyList(@Nullable List list) { return list == null ? Collections.emptyList() : list; @@ -70,6 +121,10 @@ public class CollectionTools { return map == null ? Collections.emptyMap() : map; } + // ================================ + // #endregion - nullToEmpty + // ================================ + private CollectionTools() { throw new IllegalStateException("Utility class"); } diff --git a/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java b/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java index 7fa7165..8362c54 100644 --- a/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java +++ b/src/test/java/xyz/zhouxy/plusone/commons/collection/CollectionToolsTests.java @@ -34,14 +34,24 @@ import java.util.Set; import org.junit.jupiter.api.Test; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.HashMultiset; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; import com.google.common.collect.Sets; +import com.google.common.collect.Table; +import com.google.common.collect.TreeRangeSet; public class CollectionToolsTests { @Test void testIsEmpty() { + // Collection List list = new ArrayList<>(); assertTrue(CollectionTools.isEmpty(list)); assertFalse(CollectionTools.isNotEmpty(list)); @@ -50,6 +60,7 @@ public class CollectionToolsTests { assertFalse(CollectionTools.isEmpty(list)); assertTrue(CollectionTools.isNotEmpty(list)); + // Map Map map = new HashMap<>(); assertTrue(CollectionTools.isEmpty(map)); assertFalse(CollectionTools.isNotEmpty(map)); @@ -57,6 +68,43 @@ public class CollectionToolsTests { map.put("2", 2); assertFalse(CollectionTools.isEmpty(map)); assertTrue(CollectionTools.isNotEmpty(map)); + + // Table + Table table = HashBasedTable.create(); + assertTrue(CollectionTools.isEmpty(table)); + assertFalse(CollectionTools.isNotEmpty(table)); + + table.put("ABC", "d", 4); + assertFalse(CollectionTools.isEmpty(table)); + assertTrue(CollectionTools.isNotEmpty(table)); + + // Multimap + Multimap multimap = HashMultimap.create(); + assertTrue(CollectionTools.isEmpty(multimap)); + assertFalse(CollectionTools.isNotEmpty(multimap)); + + multimap.put("ABC", "d"); + assertFalse(CollectionTools.isEmpty(multimap)); + assertTrue(CollectionTools.isNotEmpty(multimap)); + + // Multiset + Multiset multiset = HashMultiset.create(); + assertTrue(CollectionTools.isEmpty(multiset)); + assertFalse(CollectionTools.isNotEmpty(multiset)); + + multiset.add("ABC"); + assertFalse(CollectionTools.isEmpty(multiset)); + assertTrue(CollectionTools.isNotEmpty(multiset)); + + // RangeSet + RangeSet rangeSet = TreeRangeSet.create(); + assertTrue(CollectionTools.isEmpty(rangeSet)); + assertFalse(CollectionTools.isNotEmpty(rangeSet)); + + rangeSet.add(Range.closed(0, 100)); + rangeSet.add(Range.openClosed(100, 200)); + assertFalse(CollectionTools.isEmpty(rangeSet)); + assertTrue(CollectionTools.isNotEmpty(rangeSet)); } @Test