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

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

我有一个String[]具有这样的价值:

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

给出String s,有没有一个好的方法来测试VALUESs?


qq_笑_17
浏览 873回答 4
4回答

12345678_0001

只是为了开始清理代码。我们已(更正):public&nbsp;static&nbsp;final&nbsp;String[]&nbsp;VALUES&nbsp;=&nbsp;new&nbsp;String[]&nbsp;{"AB","BC","CD","AE"};这是一个可变的静态,FindBugs会告诉你非常淘气。应保密:private&nbsp;static&nbsp;final&nbsp;String[]&nbsp;VALUES&nbsp;=&nbsp;new&nbsp;String[]&nbsp;{"AB","BC","CD","AE"};(注意,您实际上可以删除new String[];(比特)因此,引用数组是不好的,特别是在这里我们需要一个集合:private&nbsp;static&nbsp;final&nbsp;Set<String>&nbsp;VALUES&nbsp;=&nbsp;new&nbsp;HashSet<String>(Arrays.asList( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;String[]&nbsp;{"AB","BC","CD","AE"}));(像我这样多疑的人,如果被包裹在里面,可能会感到更自在。Collections.unmodifiableSet-甚至可以公开。“给定字符串s,是否有一种测试值是否包含s的好方法?”VALUES.contains(s)o(1)。最新情况:从JavaSE 9开始Set.of.private&nbsp;static&nbsp;final&nbsp;Set<String>&nbsp;VALUES&nbsp;=&nbsp;Set.of( &nbsp;&nbsp;&nbsp;&nbsp;"AB","BC","CD","AE");这个右型,&nbsp;不变,&nbsp;O(1)和简练。漂亮的,美丽的。(就品牌而言,可以预见的是,集合API仍然缺少不可变的集合类型,语法仍然过于冗长,不适合我的口味。)

三国纷争

你可以用ArrayUtils.contains从…阿帕奇公域朗public static boolean contains(Object[] array, Object objectToFind)注意,此方法返回false如果传递的数组是null.也有各种类型的基元数组可用的方法。例子:String[]&nbsp;fieldsToInclude&nbsp;=&nbsp;{&nbsp;"id",&nbsp;"name",&nbsp;"location"&nbsp;};if&nbsp;(&nbsp;ArrayUtils.contains(&nbsp;fieldsToInclude,&nbsp;"id"&nbsp;)&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;some&nbsp;stuff.}

慕雪6442864

只需手工实现即可:public&nbsp;static&nbsp;<T>&nbsp;boolean&nbsp;contains(final&nbsp;T[]&nbsp;array,&nbsp;final&nbsp;T&nbsp;v)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(final&nbsp;T&nbsp;e&nbsp;:&nbsp;array) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e&nbsp;==&nbsp;v&nbsp;||&nbsp;v&nbsp;!=&nbsp;null&nbsp;&&&nbsp;v.equals(e)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}改进:这个v != null在该方法中,条件是恒定的。在方法调用期间,它总是计算为相同的布尔值。所以如果输入array是很大的,只计算一次这个条件是更有效的,而且我们可以在for基于结果的循环。改良contains()方法:public&nbsp;static&nbsp;<T>&nbsp;boolean&nbsp;contains2(final&nbsp;T[]&nbsp;array,&nbsp;final&nbsp;T&nbsp;v)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(v&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(final&nbsp;T&nbsp;e&nbsp;:&nbsp;array) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(final&nbsp;T&nbsp;e&nbsp;:&nbsp;array) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e&nbsp;==&nbsp;v&nbsp;||&nbsp;v.equals(e)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}
打开App,查看更多内容
随时随地看视频慕课网APP