我有一个名为“bob”的数组,其中包含值。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
我如何知道名为 bob 的数组中是否存在“愚蠢”值而不遍历它?
你可以使用List#contains
方法。为此,您需要将数组转换为列表。您可以使用Arrays#asList()
以下方法:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
if (Arrays.asList(bob).contains("silly")) {
// true
}
使用静态将数组转换为列表Arrays.asList(T)
并检查List.contains(Object)
以检查对象是否存在于重新调整的集合中。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));
然而,传统方法是遍历数组并使用 equals() 检查每个元素。
如果您要经常检查它,您可能会发现使用 a 更有效HashSet
:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");
这是一个简单的方法:
ArrayList list = new ArrayList(Arrays.asList(bob ));
if (list.contains("silly")) {
// my array has silly !
}
这个想法是将您的 Array 转换为 ListArray 对象。但它会消耗额外的内存,所以在使用它之前确保它是值得的。
编辑
如果您追求性能并节省内存,则可以改用二分搜索算法:这样您就不必分配新对象:
Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}
上面的代码对我不起作用。我猜不允许原始类型。
必须手动完成:
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;
}
:)