I have a List of object and the list is very big. The object is
class Sample {     String value1;     String value2;     String value3;     String value4;     String value5;  }   Now I have to search for a specific value of an object in the list. Say if value3=='three'  I have to return those objects (My search is not always based on value3)
The list is
List<Sample> list = new ArrayList<Sample>();   What is the efficient way of doing it?
Thanks.
You can give a try to Apache Commons Collections.
There is a class CollectionUtils that allows you to select or filter items by custom Predicate.
Your code would be like this:
Predicate condition = new Predicate() {    boolean evaluate(Object sample) {         return ((Sample)sample).value3.equals("three");    } }; List result = CollectionUtils.select( list, condition );   Update:
In java8, using Lambdas and StreamAPI this should be:
List<Sample> result = list.stream()      .filter(item -> item.value3.equals("three"))      .collect(Collectors.toList());   much nicer!
With Java 8 you can simply convert your list to a stream allowing you to write:
import java.util.List; import java.util.stream.Collectors;  List<Sample> list = new ArrayList<Sample>(); List<Sample> result = list.stream()     .filter(a -> Objects.equals(a.value3, "three"))     .collect(Collectors.toList());   Note that
a -> Objects.equals(a.value3, "three") is a lambda expression result is a List with a Sample typelist.parallelStream() instead of list.stream() (read this)If you can't use Java 8, you can use Apache Commons library and write:
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate;  Collection result = CollectionUtils.select(list, new Predicate() {      public boolean evaluate(Object a) {          return Objects.equals(((Sample) a).value3, "three");      }  });  // If you need the results as a typed array: Sample[] resultTyped = (Sample[]) result.toArray(new Sample[result.size()]);   Note that:
Object to Sample at each iterationSample[], you need extra code (as shown in my sample)Bonus: A nice blog article talking about how to find element in list.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With