为了账号安全,请及时绑定邮箱和手机立即绑定

如何确定数组是否包含Java中的特定值?

如何确定数组是否包含Java中的特定值?

qq_笑_17 2019-05-30 11:17:42
如何确定数组是否包含Java中的特定值?我有一个String[]具有这样的价值:public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};给出String s,有没有一个好的方法来测试VALUES含s?
查看完整描述

4 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

只是为了开始清理代码。我们已(更正):

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

这是一个可变的静态,FindBugs会告诉你非常淘气。应保密:

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

(注意,您实际上可以删除new String[];(比特)

因此,引用数组是不好的,特别是在这里我们需要一个集合:

private static final Set<String> VALUES = new HashSet<String>(Arrays.asList(
     new String[] {"AB","BC","CD","AE"}));

(像我这样多疑的人,如果被包裹在里面,可能会感到更自在。Collections.unmodifiableSet-甚至可以公开。

“给定字符串s,是否有一种测试值是否包含s的好方法?”

VALUES.contains(s)

o(1)。

最新情况:从JavaSE 9开始Set.of.

private static final Set<String> VALUES = Set.of(
    "AB","BC","CD","AE");

这个右型不变O(1)简练。漂亮的,美丽的。

(就品牌而言,可以预见的是,集合API仍然缺少不可变的集合类型,语法仍然过于冗长,不适合我的口味。)


查看完整回答
反对 回复 2019-05-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

你可以用ArrayUtils.contains从…阿帕奇公域朗

public static boolean contains(Object[] array, Object objectToFind)

注意,此方法返回false如果传递的数组是null.

也有各种类型的基元数组可用的方法。

例子:

String[] fieldsToInclude = { "id", "name", "location" };if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) {
    // Do some stuff.}


查看完整回答
反对 回复 2019-05-30
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

只需手工实现即可:

public static <T> boolean contains(final T[] array, final T v) {
    for (final T e : array)
        if (e == v || v != null && v.equals(e))
            return true;

    return false;}

改进:

这个v != null在该方法中,条件是恒定的。在方法调用期间,它总是计算为相同的布尔值。所以如果输入array是很大的,只计算一次这个条件是更有效的,而且我们可以在for基于结果的循环。改良contains()方法:

public static <T> boolean contains2(final T[] array, final T v) {
    if (v == null) {
        for (final T e : array)
            if (e == null)
                return true;
    } 
    else {
        for (final T e : array)
            if (e == v || v.equals(e))
                return true;
    }

    return false;}


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 916 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信