Merge pull request #2951 from hhhhhxm/v6-dev-2023-03-03-01

新增一个判断数组是否存在重复元素的方法
This commit is contained in:
Golden Looly 2023-03-07 15:47:39 +08:00 committed by GitHub
commit 3c35654177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 10 deletions

View File

@ -13,16 +13,7 @@ import cn.hutool.core.text.StrUtil;
import java.lang.reflect.Array;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
@ -2088,4 +2079,20 @@ public class ArrayUtil extends PrimitiveArrayUtil {
return true;
}
/**
* 判断数组中是否有相同元素
* <p>若传入空数组则返回{@code false}</p>
* @param <T> 数组元素类型
* @param array 数组
* @return 数组是否有相同元素
* @since 6.0.0
*/
public static <T> Boolean hasSameElement(final T[] array) {
if (isEmpty(array)) {
return false;
}
Set<T> elementSet = new HashSet<>(Arrays.asList(array));
return elementSet.size() != array.length;
}
}

View File

@ -673,4 +673,23 @@ public class ArrayUtilTest {
Assert.assertTrue(ArrayUtil.isSorted(f, Integer::compareTo));
Assert.assertFalse(ArrayUtil.isSorted(f, null));
}
@Test
public void hasSameElementTest() {
final Integer[] a = {1, 1};
Assert.assertTrue(ArrayUtil.hasSameElement(a));
final String[] b = {"a", "b", "c"};
Assert.assertFalse(ArrayUtil.hasSameElement(b));
final Object[] c = new Object[]{"1", "2", 2, 4D};
Assert.assertFalse(ArrayUtil.hasSameElement(c));
final Object[] d = new Object[]{"1", "2", "2", 4D};
Assert.assertTrue(ArrayUtil.hasSameElement(d));
final Object[] e = new Object[]{"1", 2, 2, 4D};
Assert.assertTrue(ArrayUtil.hasSameElement(e));
}
}