Android - Check whether a value exist in an Array

JavaArrays

Java Problem Overview


I have an array named "bob" which contains values.

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

How can I know whether "silly" value exists in the array named bob without iterating through it?

Java Solutions


Solution 1 - Java

You can use List#contains method. For that you need to convert your array to a list. You can use Arrays#asList() method fot that:

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

if (Arrays.asList(bob).contains("silly")) {
    // true
}

Solution 2 - Java

Convert the Array to List using static Arrays.asList(T) and check with List.contains(Object) to check if an object exists in the retuned collection.

	String[] bob = { "this", "is", "a", "really", "silly", "list" };
           System.out.println(Arrays.asList(bob).contains("silly"));

Traditional way however would be to iterate over the array and check at each element using equals().

Solution 3 - Java

If you are going to check it a lot you may find it more efficient to use a HashSet:

String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");

Solution 4 - Java

Here is an easy way to do it:

	ArrayList list = new ArrayList(Arrays.asList(bob ));
	if (list.contains("silly")) {
                    // my array has silly !
             }

The idea is to convert your Array to a ListArray object. but it would consume extra memory, so make sure it is worth it before using it.

Edit

If you are after peformance and saving memory you can use binary search algorthem instead: this way you don't have to allocate new objects:

Arrays.sort(array) 
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}

Solution 5 - Java

above code does not work for me. primitive types not allowed i guess.

got to do it manually:

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;
}

:)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2065795View Question on Stackoverflow
Solution 1 - JavaRohit JainView Answer on Stackoverflow
Solution 2 - JavaPermGenErrorView Answer on Stackoverflow
Solution 3 - JavaOldCurmudgeonView Answer on Stackoverflow
Solution 4 - JavaMr.MeView Answer on Stackoverflow
Solution 5 - JavaraptureView Answer on Stackoverflow