一个衬垫,用于检查元素是否在列表中

时间:2010-01-25 20:27:38

标签: java

我一直在使用Java / Python。现在在这种情况下,我想检查元素是否在列表中并做了什么......

Python说:

if "a" in ["a", "b", "c"]:
    print "It's there!"

java是否为此提供任何一个内联,而不是逐步创建ArrayList / Set或类似的数据结构并向其中添加元素?

谢谢

8 个答案:

答案 0 :(得分:80)

使用Arrays.asList

if( Arrays.asList("a","b","c").contains("a") )

答案 1 :(得分:12)

List接口中有一个boolean contains(Object obj)方法。

你应该可以说:

if (list.contains("a")) {
    System.out.println("It's there");
}

根据javadoc

boolean contains(Object o)

Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).

答案 2 :(得分:8)

在JDK7中:

if ({"a", "b", "c"}.contains("a")) {

假设Project Coin集合文字项目通过。

编辑:没有。

答案 3 :(得分:3)

您可以尝试使用带有分隔符的字符串,该分隔符不会出现在任何元素中。

if ("|a|b|c|".contains("|a|"))

答案 4 :(得分:1)

您可以使用java.util.Arrays.binarySearch查找数组中的元素或检查其存在:

import java.util.Arrays;
...

char[] array = new char[] {'a', 'x', 'm'};
Arrays.sort(array); 
if (Arrays.binarySearch(array, 'm') >= 0) {
    System.out.println("Yes, m is there");
}

请注意,要使binarySearch正常工作,需要对数组进行排序。因此在示例中调用Arrays.sort()。如果您的数据已经排序,则无需执行此操作。因此,如果您需要先对数组进行排序,这不是严格意义上的单线程。不幸的是,Arrays.sort()没有返回对数组的引用 - 因此无法组合sort和binarySearch(即Arrays.binarySearch(Arrays.sort(myArray),key))不起作用)。

如果你能承受额外的分配,使用Arrays.asList()似乎更清晰。

答案 5 :(得分:0)

如果他真的想要一个没有任何收藏的单行,那么,他可以有一个:

for(String s:new String[]{"a", "b", "c")) if (s.equals("a")) System.out.println("It's there");

*微笑*

(难道不难看?请不要在实际代码中使用它)

答案 6 :(得分:0)

 public class Itemfound{ 
        public static void main(String args[]){

                if( Arrays.asList("a","b","c").contains("a"){
                      System.out.println("It is here");
         }
    }

}

这就是您要寻找的。 contains()方法仅检查列表中元素的索引。如果索引大于“ 0”,则列表中存在元素。

public boolean contains(Object o) {
return indexOf(o) >= 0;
}

答案 7 :(得分:0)

我会使用:

if (Stream.of("a","b","c").anyMatch("a"::equals)) {
    //Code to execute
};

或:

Stream.of("a","b","c")
    .filter("a"::equals)
    .findAny()
    .ifPresent(ignore -> /*Code to execute*/);