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

Java 一个衬板,用于检查元素是否在列表中,java,Java,我一直在断断续续地使用Java/Python。现在在这种情况下,我想检查元素是否在列表中,然后做一些事情 Python说: if "a" in ["a", "b", "c"]: print "It's there!" java是否为此提供了一个线性程序,而不是分步创建ArrayList/Set或类似的数据结构并向其中添加元素 谢谢使用: 列表界面中有一个布尔包含(对象obj)方法 你应该能够说: if (list.contains("a")) { System.out.prin

我一直在断断续续地使用Java/Python。现在在这种情况下,我想检查元素是否在列表中,然后做一些事情

Python说:

if "a" in ["a", "b", "c"]:
    print "It's there!"
java是否为此提供了一个线性程序,而不是分步创建ArrayList/Set或类似的数据结构并向其中添加元素

谢谢

使用:


列表界面中有一个布尔包含(对象obj)方法

你应该能够说:

if (list.contains("a")) {
    System.out.println("It's there");
}
根据报告:

您可以使用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()似乎更干净。

如果他真的想要一个没有任何集合的单行程序,好的,他可以有一个:

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


(这不是很难看吗?请不要在实际代码中使用它)

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

if ("|a|b|c|".contains("|a|"))
在JDK7中:

if ({"a", "b", "c"}.contains("a")) {
假设项目“硬币集合文字”项目通过

编辑:它没有

 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;
}
我将使用:

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


列表只是数组的包装器,因此非常轻量级。当然,“contains”最终只会遍历数组,这有什么意义呢?@danben当然,但它是一个合适的单行程序。它是一个单行程序-您不必手动实例化集合类型+是的,对于一行程序来说,使用O(logn)技术比O(n)技术没有任何优势。如果你想在一个大的集合中重复使用包含检查,那么使用HashSet,如果你得到的是HashSet的话。@danben,他说“分多个步骤”是时候了。希望这能被采纳。我厌倦了Java的冗长,额外的13个字符可能不会杀死你。@X_Trust如果你绝望的话,用varargs添加你自己的static contains方法。
public boolean contains(Object o) {
return indexOf(o) >= 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*/);