Finding an element in an array in Java
开发者_StackOverflowDoes 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?
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.
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.
Use a for loop. There's nothing built into array. Or switch to a java.util Collection class.
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
).
You can use one of the many Arrays.binarySearch()
methods. Keep in mind that the array must be sorted first.
精彩评论