Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

if (variable == [any item in a collection]) in Java

Let's say I have an array of primitives or a list of objects, doesn't matter, is there a short way of doing this kind of check:

if (a_primitive == any_item_in_my_collection) {
    // do something
}

or

if (an_object_ref.equals(any_item_in_my_collection)) {
    // do something
}

without doing this

for (int i = 0; i < myArray.length; i++) {
    if (a_primitive == myArray[i]) {
        // do something
    }
}

Thank you!

like image 981
Slavko Avatar asked Dec 03 '22 06:12

Slavko


2 Answers

If you want your lookup to be O(1) - you need to mantain the data in an associative array or hashtable. Otherwise, you're going to have to traverse each element. The contains method is just going to turn around and traverse your List for you.

like image 166
Amir Afghani Avatar answered Dec 06 '22 10:12

Amir Afghani


Do you have to use arrays? Why not switch to Collection-based API?

Then you can use Collection.contains(Object o).

Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)).

Depending on the implementation, this query can be answered in O(1) or O(log N).

like image 43
polygenelubricants Avatar answered Dec 06 '22 11:12

polygenelubricants