简体   繁体   English

如何在java中使用比较器对字符串记录数组进行排序?

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

i have a string array data comprising of individual records.我有一个由单个记录组成的字符串数组数据。 ie, 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?如何使用可比较的界面提取每个用户记录并根据年龄对其进行排序?

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.之后创建 agecomparator 来比较年龄。

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);
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM