I am trying to convert List of objects data structure in to Map of Maps.
Map<String, Map<Integer, StudentModel>>
String is sports variable
Integer is orderId.
My logic returned below value as shown below. I am looking for better way of achieving this.
@Data
@Builder
public class Student {
private String name;
private int rollno;
private int studentage;
private String sports;
private int orderId;
}
@Data
@Builder
public class StudentModel {
private String name;
private int rollno;
private int studentage;
private String sports;
}
Created same data and added to list:
arraylist.add(new Student(223, "Zebra", 26, "cricket", 1));
arraylist.add(new Student(245, "Rahul", 24, "cricket", 2));
arraylist.add(new Student(209, "Ajeet", 32, "cricket", 3));
arraylist.add(new Student(140, "Abhay", 28, "basketball", 4));
arraylist.add(new Student(270, "Ranger", 29, "basketball", 5));
arraylist.add(new Student(250, "Ranger1", 39, "basketball",6));
Collections.sort(arraylist, Comparator.comparing(Student::getOrderId));
My expected output:
{
cricket={
1=Student(sports=cricket, rollno=223, name=Zebra, studentage=26),
2=Student(sports=cricket, rollno=245, name=Rahul, studentage=24),
3=Student(sports=cricket, rollno=209, name=Ajeet, studentage=32)
},
basketball={
4=Student(sports=basketball, rollno=140, name=Abhay, studentage=28),
5=Student(sports=basketball, rollno=270, name=Ranger, studentage=29),
6=Student(sports=basketball, rollno=250, name=Ranger1, studentage=39)
}
}
Logic written:
public Map<String, Map<Integer, StudentModel>> studentModel() {
Map<Integer, StudentModel> studentMap = new LinkedHashMap<>();
Map<String, Map<Integer, StudentModel>> inputMap = new LinkedHashMap<>();
for (Student student : arraylist) {
StudentModel studentModel = StudentModel.builder().name(student.getName)
.rollno(student.getRollno)
.studentage(student.getStudentage)
.sports(student.getSports)
studentMap.put(studentModel.getOrderId, studentModel);
inputMap.put(student.getSports, studentMap);
}
}
Above logic is returning below result:
{
cricket={
1=Student(sports=cricket, rollno=223, name=Zebra, studentage=26),
2=Student(sports=cricket, rollno=245, name=Rahul, studentage=24),
3=Student(sports=cricket, rollno=209, name=Ajeet, studentage=32),
4=Student(sports=basketball, rollno=140, name=Abhay, studentage=28),
5=Student(sports=basketball, rollno=270, name=Ranger, studentage=29),
6=Student(sports=basketball, rollno=250, name=Ranger1, studentage=39)
},
basketball={
1=Student(sports=cricket, rollno=223, name=Zebra, studentage=26),
2=Student(sports=cricket, rollno=245, name=Rahul, studentage=24),
3=Student(sports=cricket, rollno=209, name=Ajeet, studentage=32),
4=Student(sports=basketball, rollno=140, name=Abhay, studentage=28),
5=Student(sports=basketball, rollno=270, name=Ranger, studentage=29),
6=Student(sports=basketball, rollno=250, name=Ranger1, studentage=39)
}
}