output should be like below limit(5) :
User{name='T', var=100.43}
User{name='E', var=50.10}
User{name='D', var=40.93}
User{name='C', var=30.99}
User{name='B', var=20.01}
User{name="Dummy" var="13.88"}
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamApplication {
static List<Vari> users = Arrays.asList(
new Vari("C", "30.99"),
new Vari("D", "40.93"),
new Vari("A", "10.43"),
new Vari("G", "1.43"),
new Vari("T", "100.43"),
new Vari("B", "20.01"),
new Vari("BB", "2.01"),
new Vari("R", "0.01"),
new Vari("N", "0"),
new Vari("E", "50.10"));
public static void main(String[] args) {
List<Vari> sortedList1 = users.stream()
.sorted((o1, o2) -> {
Double absVariance1=Double.parseDouble(o1.getAbsVariance()) ;
Double absVariance2=Double.parseDouble(o2.getAbsVariance());
if(absVariance1 < absVariance2)
return 1;
else return -1;
}).limit(5)
.collect(Collectors.toList());
sortedList1.forEach(System.out::println);
}
static class Vari {
private String name;
private String avar;
public Vari(String name, String avar) {
this.name = name;
this.avar = avar;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAbsVariance() {
return avar;
}
public void setAbsVariance(String avar) {
this.avar = avar;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", var=" + avar +
'}';
}
} }