Take a look at this example:
SortedMap<String, String> fileExtensions = new TreeMap<>();
// Adding new key-value pairs to a TreeMap
fileExtensions.put("python", ".py");
fileExtensions.put("c++", ".cpp");
fileExtensions.put("kotlin", ".kt");
fileExtensions.put("golang", ".go");
fileExtensions.put("java", ".java");
// Printing the TreeMap (Output will be sorted based on keys)
System.out.println(fileExtensions);
}
It seems like it is what you are looking for. Source
Based on that, you can create an Enum and a class Comparator:
import java.util.*;
public class Main2 {
public static void main(String[] args) {
SortedMap<RankComparator,List<Mobile>> mobiles = new TreeMap<>();
List<Mobile> mobiles1 = new ArrayList<>();
mobiles.put(new RankComparator(Rank.Samsung), mobiles1);
mobiles.put(new RankComparator(Rank.Nokia), mobiles1);
mobiles.put(new RankComparator(Rank.Apple), mobiles1);
mobiles.put(new RankComparator(Rank.Blackberry), mobiles1);
((TreeMap<RankComparator, List<Mobile>>) mobiles).entrySet().forEach(e -> System.out.println(e.getKey().rank));
}
}
class Mobile{
Rank rank;
public Mobile(Rank rank) {
this.rank = rank;
}
}
enum Rank{
Apple(1),
Blackberry(2),
Samsung(3),
Nokia(4);
int rank;
Rank(int i) {
this.rank = i;
}
}
class RankComparator implements Comparable<RankComparator>{
Rank rank;
public RankComparator(Rank rank) {
this.rank = rank;
}
@Override
public int compareTo(RankComparator otherRank) {
return this.rank.rank - otherRank.rank.rank;
}
}
output ->
Apple
Blackberry
Samsung
Nokia