fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.util.ArrayList;
  7. import java.util.Comparator;
  8. import java.util.List;
  9. import java.util.stream.Collectors;
  10.  
  11. /* Name of the class has to be "Main" only if the class is public. */
  12. class Ideone
  13. {
  14. public static void main (String[] args) throws java.lang.Exception
  15. {
  16. List<List<String>> data = new ArrayList<>();
  17. List<String> list1 = new ArrayList<>();
  18. List<String> list2 = new ArrayList<>();
  19. List<String> list3 = new ArrayList<>();
  20.  
  21. list1.add("Siva");
  22. list1.add("20");
  23. list1.add("Hyd");
  24. list1.add("TA");
  25. list1.add("India");
  26.  
  27. list2.add("Suresh");
  28. list2.add("22");
  29. list2.add("Banglore");
  30. list2.add("KA");
  31. list2.add("India");
  32.  
  33. list3.add("Ramesh");
  34. list3.add("24");
  35. list3.add("Chennai");
  36. list3.add("TN");
  37. list3.add("India");
  38.  
  39. data.add(list1);
  40. data.add(list2);
  41. data.add(list3);
  42.  
  43. List<List<String>> listSorted1 = data.stream()
  44. .sorted((x, y) -> {
  45. int res = x.get(0).compareTo(y.get(0));
  46. if (res != 0) return res;
  47. res = Integer.valueOf(x.get(1)).compareTo(Integer.valueOf(y.get(1)));
  48. if (res != 0) return res;
  49. return x.get(2).compareTo(y.get(2));
  50. })
  51. .collect(Collectors.toList());
  52.  
  53. System.out.println("Sorting without mapping: \n" + listSorted1);
  54.  
  55. List<MyClass> listSorted2 = data.stream()
  56. .map(list -> MyClass.createMyClass(list))
  57. .sorted(Comparator.comparing(MyClass::getName).thenComparing(MyClass::getAge).thenComparing(MyClass::getCity))
  58. .collect(Collectors.toList());
  59.  
  60. System.out.println("\nSorting with mapping: \n" + listSorted2);
  61. }
  62.  
  63. static class MyClass {
  64. String name;
  65. int age;
  66. String city, code, country;
  67.  
  68. public String getName() {
  69. return name;
  70. }
  71.  
  72. public int getAge() {
  73. return age;
  74. }
  75.  
  76. public String getCity() {
  77. return city;
  78. }
  79.  
  80. public String getCode() {
  81. return code;
  82. }
  83.  
  84. public String getCountry() {
  85. return country;
  86. }
  87.  
  88. public static MyClass createMyClass(List<String> list) {
  89. if (list == null || list.size() < 5) {
  90. return null;
  91. }
  92.  
  93. MyClass mc = new MyClass();
  94. mc.name = list.get(0);
  95. mc.age = Integer.valueOf(list.get(1));
  96. mc.city = list.get(2);
  97. mc.code = list.get(3);
  98. mc.country = list.get(4);
  99.  
  100. return mc;
  101. }
  102.  
  103. @Override
  104. public String toString() {
  105. return String.format("(%s %d %s %s %s)", name, age, city, code, country);
  106. }
  107. }
  108. }
Success #stdin #stdout 0.15s 51360KB
stdin
Standard input is empty
stdout
Sorting without mapping: 
[[Ramesh, 24, Chennai, TN, India], [Siva, 20, Hyd, TA, India], [Suresh, 22, Banglore, KA, India]]

Sorting with mapping: 
[(Ramesh 24 Chennai TN India), (Siva 20 Hyd TA India), (Suresh 22 Banglore KA India)]