java 检查是否是数组 检查是否是空数组 检查数组是否包含某个元素

    /**
     * Determine whether the given object is an array:
     * either an Object array or a primitive array.
     * @param obj the object to check
     */
    public static boolean isArray(Object obj) {
        return (obj != null && obj.getClass().isArray());
    }
    /**
     * Determine whether the given array is empty:
     * i.e. {@code null} or of zero length.
     * @param array the array to check
     */
    public static boolean isEmpty(Object[] array) {
        return (array == null || array.length == 0);
    }
    /**
     * Check whether the given array contains the given element.
     * @param array the array to check (may be {@code null},
     * in which case the return value will always be {@code false})
     * @param element the element to check for
     * @return whether the element has been found in the given array
     */
    public static boolean containsElement(Object[] array, Object element) {
        if (array == null) {
            return false;
        }
        for (Object arrayEle : array) {
            if (nullSafeEquals(arrayEle, element)) {
                return true;
            }
        }
        return false;
    }

两个对象是否相等,包括数数组

    /**
     * Determine if the given objects are equal, returning {@code true}
     * if both are {@code null} or {@code false} if only one is
     * {@code null}.
     * <p>Compares arrays with {@code Arrays.equals}, performing an equality
     * check based on the array elements rather than the array reference.
     * @param o1 first Object to compare
     * @param o2 second Object to compare
     * @return whether the given objects are equal
     * @see java.util.Arrays#equals
     */
    public static boolean nullSafeEquals(Object o1, Object o2) {
        if (o1 == o2) {
            return true;
        }
        if (o1 == null || o2 == null) {
            return false;
        }
        if (o1.equals(o2)) {
            return true;
        }
        if (o1.getClass().isArray() && o2.getClass().isArray()) {
            if (o1 instanceof Object[] && o2 instanceof Object[]) {
                return Arrays.equals((Object[]) o1, (Object[]) o2);
            }
            if (o1 instanceof boolean[] && o2 instanceof boolean[]) {
                return Arrays.equals((boolean[]) o1, (boolean[]) o2);
            }
            if (o1 instanceof byte[] && o2 instanceof byte[]) {
                return Arrays.equals((byte[]) o1, (byte[]) o2);
            }
            if (o1 instanceof char[] && o2 instanceof char[]) {
                return Arrays.equals((char[]) o1, (char[]) o2);
            }
            if (o1 instanceof double[] && o2 instanceof double[]) {
                return Arrays.equals((double[]) o1, (double[]) o2);
            }
            if (o1 instanceof float[] && o2 instanceof float[]) {
                return Arrays.equals((float[]) o1, (float[]) o2);
            }
            if (o1 instanceof int[] && o2 instanceof int[]) {
                return Arrays.equals((int[]) o1, (int[]) o2);
            }
            if (o1 instanceof long[] && o2 instanceof long[]) {
                return Arrays.equals((long[]) o1, (long[]) o2);
            }
            if (o1 instanceof short[] && o2 instanceof short[]) {
                return Arrays.equals((short[]) o1, (short[]) o2);
            }
        }
        return false;
    }

判断枚举数组中是否包含某个字符串(忽略大小写)

    /**
     * Check whether the given array of enum constants contains a constant with the given name,
     * ignoring case when determining a match.
     * @param enumValues the enum values to check, typically the product of a call to MyEnum.values()
     * @param constant the constant name to find (must not be null or empty string)
     * @return whether the constant has been found in the given array
     */
    public static boolean containsConstant(Enum<?>[] enumValues, String constant) {
        return containsConstant(enumValues, constant, false);
    }

判断枚举数组中是否包含某个字符串

    /**
     * Check whether the given array of enum constants contains a constant with the given name.
     * @param enumValues the enum values to check, typically the product of a call to MyEnum.values()
     * @param constant the constant name to find (must not be null or empty string)
     * @param caseSensitive whether case is significant in determining a match
     * @return whether the constant has been found in the given array
     */
    public static boolean containsConstant(Enum<?>[] enumValues, String constant, boolean caseSensitive) {
        for (Enum<?> candidate : enumValues) {
            if (caseSensitive ?
                    candidate.toString().equals(constant) :
                    candidate.toString().equalsIgnoreCase(constant)) {
                return true;
            }
        }
        return false;
    }
    /**
     * Case insensitive alternative to {@link Enum#valueOf(Class, String)}.
     * @param <E> the concrete Enum type
     * @param enumValues the array of all Enum constants in question, usually per Enum.values()
     * @param constant the constant to get the enum value of
     * @throws IllegalArgumentException if the given constant is not found in the given array
     * of enum values. Use {@link #containsConstant(Enum[], String)} as a guard to avoid this exception.
     */
    public static <E extends Enum<?>> E caseInsensitiveValueOf(E[] enumValues, String constant) {
        for (E candidate : enumValues) {
            if (candidate.toString().equalsIgnoreCase(constant)) {
                return candidate;
            }
        }
        throw new IllegalArgumentException(
                String.format("constant [%s] does not exist in enum type %s",
                        constant, enumValues.getClass().getComponentType().getName()));
    }
时间: 2024-10-26 10:06:55

java 检查是否是数组 检查是否是空数组 检查数组是否包含某个元素的相关文章

小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。

异常:System.ArgumentException: 目标数组的长度不够.请检查 destIndex 和长度以及数组的下限.(不好意思忘记截图了) 发生异常的代码如下: var list = new List<Topic>(); Parallel.For(2, totalPage + 1, page => { //AddRange 方法发生异常 list.AddRange(GetTopics(board.BoardID, page)); }); 原因:List<T> 集合

JAVA泛型中的类型擦除及为什么不支持泛型数组

一,数组的协变性(covariant array type)及集合的非协变性 设有Circle类和Square类继承自Shape类. 关于数组的协变性,看代码: public static double totalArea(Shape[] arr){ double total = 0; for (Shape shape : arr) { if(shape != null) total += shape.area(); } return total; } 如果给 totalArray(Shape[

在Java中判断数组中包含某个元素的几种方式的比较

闲来无事,将java中判断数组中包含某个元素的几种方式的速度进行对比,直接上代码 talk is cheap, show you the code package test.contain.lishaojie; import java.util.Arrays;import java.util.HashSet;import java.util.Set; public class TestContain { /** * @param args */ public static void main(S

java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置

此类实现:输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组.并交换两个子数组的位置,保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点,分割为子数组一:7,9,8,5.和子数组二:3,2.经过交换算法后的结果应为:3,2,7,9,8,5 有两种交换算法<1>前插法:将子数组3,2另存在一个临时数组中,将原数组7,9,8,5,3,2每一位向后移两个位置  再将子数组3,2插入到移动好元素位置的原数组中.<2>逆置法:将原数组7

java中的输入流(Scanner),数据类型,运算符,switch,数组的用法

//java中创建包用package相当于C#的命名空间namespace,java中导入包用import相当于C#中引入命名空间usingimport java.util.*;//导入包,*代表导入java.util包下面的所有类public class Test { /***********Scanner的使用************/// public static void main(String[] args) {//  Scanner input = new Scanner(Syst

Python(63)_写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回

`#-*-coding:utf-8-*- ''' 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回 ''' def func(l): return l[1::2] print(func([1,2,3,4,5,7])) 原文地址:https://www.cnblogs.com/sunnybowen/p/10257583.html

关于JAVA核心技术(卷一)读后的思考(泛型数组列表的讨论)

在C++中编译时是要确定数组大小的,而Java有所不同,它允许在运行时确定数组的大小.但是如果仅通过数组是无法改变运行时无法动态更改数组的问题.一旦确定了数组大小,就很难改变他了数组的大小了,要解决这个问题,就需要引入ArrayList的类.它使用起来有点像数组,但在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码. ArrayList是一个采用类型参数的泛型类.为了指定数组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面.下面是声明和构造一个保存Employe

Java实现Flash请求的二进制流图片保存并返回XML信息包含图片访问地址

前段时间和Flash对接了一个打点功能,java后台提供接口,Flash实现打点功能,将打点好的图片信息传到后台java实现保存图片和打点信息.其中图片是以二进制流的方式传到java后台,图片信息是以XML传到后台保存到数据库.刚开始的实现方式保存图片总是出现损坏,最后放到的图片残缺不全,经过一番调试,最终找到了原因,是在后台写入图片流的时候出现了问题,改了之后一切正常,下面是能够正常执行的代码: public void addDotPicture(HttpServletRequest requ

js中判断数组中是否包含某元素的方法

方法一:array.indexOf(item,start):元素在数组中的位置,如果没与搜索到则返回 -1. 参数 描述 item 必须.查找的元素. start 可选的整数参数.规定在数组中开始检索的位置.它的合法取值是 0 到 stringObject.length - 1. 如省略该参数,则将从字符串的首字符开始检索. 实际用法:if(arr.indexOf(某元素) > -1){//则包含该元素} var fruits = ["Banana", "Orange&

05 Scala 数组的基本操作,数组的进阶操作和多维数组

1. 数组的基本操作 1)定长数组 数组的概念和C,JAVA中的数组是一样的, 都是存储同一种类型的元素.定长数组存储一定长度的数组.    //声明一个数组,类型为Int,元素个数为10. val nums = new Array[Int](10) //声明一个数组,类型为String元素个数为10 . val a = new Array[String](10) //声明一个数组,初始化第一个元素为'Hello',第二个元素为"World",通过类型推到,判断出//数组的类型为Str