Android - 检查数组中是否存在值

时间:2013-02-13 17:27:25

标签: java arrays

我有一个名为“bob”的数组,其中包含值。

String[] bob = { "this", "is", "a", "really", "silly", "list" };

如何在不迭代的情况下知道名为bob的数组中是否存在“愚蠢”值?

6 个答案:

答案 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
}