Use Of Comparator for Custom Shorting

Sanjay Singh
1 min readSep 9, 2023

--

Problem statement — I have user list need to short on basis of name and age

 User user1 = new User(1, "sanjay", "10");
User user2 = new User(2, "xanjay", "50");
User user3 = new User(3, "banjay", "20");
User user4 = new User(4, "aanjayz", "90");
User user5 = new User(5, "aanjay", "40");

List<User> list = Arrays.asList(user3, user2, user1, user4, user5);

return list;
package com.logical.application.java8;

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class Logic {

public static void main(String[] args) {

List<User> user = SetDataForUser.data1();

//sort by name
Comparator<User> compratorByUserName = Comparator.comparing(User::getName);

//sort by age
Comparator<User> compratorByUserAge = Comparator.comparing(User::getAge);

//sort by name then age
Comparator<User> both = Comparator.comparing(User::getName).thenComparing(compratorByUserAge);

List<User> sortedUser =user.stream().sorted(compratorByUserName).collect(Collectors.toList());

//or
//sort by name then age
user.stream().sorted(compratorByUserName.thenComparing(compratorByUserAge)).forEach(System.out::println);

}

}

//o/p

//sort by name then age

User [id=5, name=aanjay, age=40]
User [id=4, name=aanjayz, age=90]
User [id=3, name=banjay, age=20]
User [id=1, name=sanjay, age=10]
User [id=2, name=xanjay, age=50]

Solution 2 — inner comparator method

package com.logical.application.java8;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Example2 {

public static void main(String[] args) {

List<User> user = SetDataForUser.data1();

Collections.sort(user, new Comparator<User>() {

public int compare(User o1, User o2) {


//short by age
// return o1.getAge().compareTo(o2.getAge());

//short by name
return o1.getName().compareTo(o2.getName());
};

});

for (User users : user) {
System.out.println(users);

}

}

}

--

--

Sanjay Singh
Sanjay Singh

Written by Sanjay Singh

Java, Spring Boot & Microservices developer Sharing knowledge, tutorials & coding tips on my Medium page. Follow me for insights & see story list section

No responses yet