java - 如何测试一个数组是否包含指定的值

原文 标签 IT工具网 java

指定数组,如:

public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

现在制定一个值 s,有哪些比较好的方式,判断这个数组 VALUES 是否包含值 s?

简单且优雅的方法:

  1. Arrays.asList(…).contains(…)

  2. 使用 Apache Commons Lang包中的ArrayUtils.contains

String[] fieldsToInclude = { "id", "name", "location" };

if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) {
    // Do some stuff.
}

自己写逻辑

问题的本质,其实是一个查找的问题,即查找一个数组是否包含某个值。对于原始类型,若是无序的数组,可以直接写一个 for 循环:

public static boolean useLoop(String[] arr, String targetValue) {
    for(String s: arr){
        if(s.equals(targetValue))
            return true;
    }
    return false;
}

若是有序的数组,可以考虑二分查找或者其他查找算法:

public static boolean useArraysBinarySearch(String[] arr, String targetValue) { 
    int a =  Arrays.binarySearch(arr, targetValue);
    if(a >= 0)
        return true;
    else
        return false;
}

若数组里包含的是一个个对象,实际上比较就是引用是否相等(String 类型是判断 值是否相等),本质就是比较 hashcode 和 equal 方法,可以考虑使用 List 或者 Set,如下

public static boolean useList(String[] arr, String targetValue) {
    return Arrays.asList(arr).contains(targetValue);
}
public static boolean useLoop(String[] arr, String targetValue) {
    for(String s: arr){
        if(s.equals(targetValue))
            return true;
    }
    return false;
}

stackoverflow原址:http://stackoverflow.com/questions/1128723/how-can-i-test-if-an-array-contains-a-certain-value

相关文章:

java - 如何使用Selenium处理 session 超时

java - 如何使用子类或父类(super class)定义Java函数的返回类型和参数?

java - 如何抓取随机视频以在特定条件下播放

Nginx反向代理自建CDN加速节点实现DNS智能解析

java - 通过Java连接到电话系统

java - 为什么相减这两个时间(1927年)会得到奇怪的结果

给3个 boolean 变量,当其中有2个或者2个以上为true才返回true

java - ICU音译片假名过滤器不适用于半角片假名浊音标记

使用Nginx反向代理,自建CDN加速节点

如何遍历一个JavaScript数组