Search code examples
javahashmapcomparable

how to sort an array of string records using comparator in java?


i have a string array data comprising of individual records. i.e., firstname,lastname,age,emailid,sex,address.

example:

static String[] users = {"Lola,Grimsdyke,89,lgrimsdyke0@facebook.com,Female,Newport Beach,CA","Sybilla,Martinetto,84,smartinetto1@google.it,Female,Anniston,AL","Casi,Roizn,78,croizn2@scribd.com,Female,San Jose,CA"};

how to extract each user record and sort them according to age using comparable interface?


Solution

  • First Thing you have to convert your string array to list.

     String[] users = { "Lola,Grimsdyke,89,lgrimsdyke0@facebook.com,Female,Newport Beach,CA",
                        "Sybilla,Martinetto,84,smartinetto1@google.it,Female,Anniston,AL",
                        "Casi,Roizn,78,croizn2@scribd.com,Female,San Jose,CA" };
    
                ArrayList<UserDetails> list=new ArrayList<>();
                for (int i = 0; i < users.length; i++) {
                    String[] sp = users[i].split(",");
                    list.add(new UserDetails(sp[0], sp[1], Integer.parseInt(sp[2]), sp[3], sp[4], sp[05]));
                }
                for(UserDetails detail:list) {
                    System.out.println(detail);
                }
    
    class UserDetails {
        String firstName;
        String lastName;
        int age;
        String emailId;
        String sex;
        String address;
    
    
        public UserDetails(String firstName, String lastName, int age, String emailId, String sex, String address) {
            super();
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
            this.emailId = emailId;
            this.sex = sex;
            this.address = address;
        }
    
    
        @Override
        public String toString() {
            return "UserDetails [firstName=" + firstName + ", lastName=" + lastName + ", age=" + age + ", emailId="
                    + emailId + ", sex=" + sex + ", address=" + address + "]";
        }
    
    
    }
    

    After that create agecomparator to compare age.

    class AgeComparator implements Comparator<UserDetails> {
        @Override
        public int compare(UserDetails o1, UserDetails o2) {
             return o1.age - o2.age;
        }
    }
    

    After that sort using comparator.

    System.out.println("After Sort");
            AgeComparator ageComparator=new AgeComparator();
            Collections.sort(list, ageComparator);
            for(UserDetails detail:list) {
                System.out.println(detail);
            }