Java – Get the smallest object based on certain fields in the object list

Get the smallest object based on certain fields in the object list… here is a solution to the problem.

Get the smallest object based on certain fields in the object list

I’m new to Android development and I’m trying to find the best way to get the fewest objects from a list of objects based on 3 fields.
I have a list of objects with 4 fields each: Name, State (int value), LSeconds (int value), and USeconds (integer value).
I want to get the smallest object based on State (minimum state value) first, check the LSeconds value of the lookup object if two or more objects have the same minimum state, if these are also the same, then pass the USeconds check, if there are multiple objects with the same minimum state, and finally return the first, minimum LSeconds and minimal USeconds. Is there a function that can do this automatically, or do I need to use for to do this?

Solution

Java does not have the ability to sort the object you are looking for. If you use StreamSupport is a Java library, but you can use one method as follows:

List<YourObject> result = list.stream().sorted((ob1, ob2)-> ob1.getState().
                               compareTo(ob2.getState())).
                               collect(Collectors.toList());

You can use this lambda to apply the logic you are looking for (check State first, then LSeconds, and so on).

PS: You can easily do this with Kotlin, like this question

EDIT: Sorry, you can actually use Java 8.
Check @mạnh-quyết-nguyễn answer .

Related Problems and Solutions