我一直在使用Java / Python。现在在这种情况下,我想检查元素是否在列表中并做了什么......
Python说:
if "a" in ["a", "b", "c"]:
print "It's there!"
java是否为此提供任何一个内联,而不是逐步创建ArrayList / Set或类似的数据结构并向其中添加元素?
谢谢
答案 0 :(得分:80)
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*/);