Casebash
Casebash

Reputation: 118792

Finding an element in an array in Java

Does Java have a built-function to allow me to linearly search for an element in an array or do I have to just use a for loop?

Upvotes: 29

Views: 151175

Answers (5)

Trenton
Trenton

Reputation: 11986

With Java 8, you can do this:

int[] haystack = {1, 2, 3};
int needle = 3;

boolean found = Arrays.stream(haystack).anyMatch(x -> x == needle);

You'd need to do

boolean found = Arrays.stream(haystack).anyMatch(x -> needle.equals(x));

if you're working with objects.

Upvotes: 16

hvgotcodes
hvgotcodes

Reputation: 120198

You might want to consider using a Collection implementation instead of a flat array.

The Collection interface defines a contains(Object o) method, which returns true/false.

ArrayList implementation defines an indexOf(Object o), which gives an index, but that method is not on all collection implementations.

Both these methods require proper implementations of the equals() method, and you probably want a properly implemented hashCode() method just in case you are using a hash based Collection (e.g. HashSet).

Upvotes: 10

Douglas
Douglas

Reputation: 37761

There is a contains method for lists, so you should be able to do:

Arrays.asList(yourArray).contains(yourObject);

Warning: this might not do what you (or I) expect, see Tom's comment below.

Upvotes: 26

krock
krock

Reputation: 29619

You can use one of the many Arrays.binarySearch() methods. Keep in mind that the array must be sorted first.

Upvotes: 5

duffymo
duffymo

Reputation: 308763

Use a for loop. There's nothing built into array. Or switch to a java.util Collection class.

Upvotes: 10

Related Questions