我有一个名为“bob”的数组,其中包含值。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
如何在不迭代的情况下知道名为bob的数组中是否存在“愚蠢”值?
答案 0 :(得分:111)
您可以使用List#contains
方法。为此,您需要将数组转换为列表。您可以使用Arrays#asList()
方法:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
if (Arrays.asList(bob).contains("silly")) {
// true
}
答案 1 :(得分:7)
使用静态Arrays.asList(T)
将数组转换为List,并使用List.contains(Object)
检查以检查重新调用的集合中是否存在对象。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));
然而,传统的方法是迭代数组并使用equals()检查每个元素。
答案 2 :(得分:4)
如果您要进行大量检查,您可能会发现使用HashSet
更有效:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");
答案 3 :(得分:2)
这是一种简单的方法:
ArrayList list = new ArrayList(Arrays.asList(bob ));
if (list.contains("silly")) {
// my array has silly !
}
我们的想法是将您的Array转换为ListArray对象。 但它会消耗额外的内存,所以在使用之前一定要确保它是值得的。
修改强>
如果您正在追求性能并节省内存,则可以使用二进制搜索algorthem: 这样您就不必分配新对象:
Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}
答案 4 :(得分:0)
上面的代码对我不起作用。原始类型我不允许。
手动完成:
char[] charlist = {'a','b','c','d'}
boolean arraycontains = false;
char tester = 'c';
for (int y=0;y<charlist.length;y++){
if (charlist[y] == character) {
arraycontains = true;
break;
}
}
if (arraycontains) {
//true. array contains the tester;
}
else {
//false. array does not contain the tester;
}
:)
答案 5 :(得分:-1)
首先将数组声明为Collection
可能会更有效率,或者如果您不是声明它的人而不是多次调用Arrays.asList()
,则将其变为一个:
Collection<String> bob = Arrays.asList("this", "is", "a", "really", "silly", "list");
if (bob.contains("silly")) {
//do stuff
}