如何通过检查这三个条件对通用列表进行排序 [英] How to sort generic list by checking these 3 conditions

查看:77
本文介绍了如何通过检查这三个条件对通用列表进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我们有以下列表

Rollno name age address
====== ==== === =======
01      abc  11   pqr
02      stu  21   pqr

我们应该根据名称对该列表进行排序.如果学生姓名相同,则根据年龄排序,如果年龄也相同,则根据数字排序. 我被困在如何对名字进行排序 我尝试过的代码是

We are supposed to sort this list based on names. If the name of student is same then sort based on age and if age is also same then sort based on number. I am stuck on how to sort names The code that I have tried till is

public void sortData(List<Student> studentList) {
     String a1=null;
     String a2[] = null;
     int i=0;
    for (Iterator<Student> iter = list.listIterator(); iter.hasNext();) {
        Student a = iter.next();
       System.out.println(a1 = a.getStudentName());

    }


    System.out.println(a2);
}

它正在打印纸卷编号列表,但现在我不知道如何对其进行排序.

It is printing list of roll numbers but I am not getting how to sort them now.

推荐答案

使用Comparable和Collections.sort():

Use Comparable and Collections.sort():

public class TestClass {

@Test
public void testSort() {
    List<Student> list = new ArrayList<Student>();
    list.add(  new Student( "two", "4", "street7" ) );
    list.add(  new Student( "two", "4", "street6" ) );
    list.add(  new Student( "one", "1", "street3" ) );
    list.add(  new Student( "two", "2", "street5" ) );



    Collections.sort( list );

    assertEquals( 
        "[Student [name=one, age=1, adress=street3], " +
        "Student [name=two, age=2, adress=street5], " +
        "Student [name=two, age=4, adress=street6], " +
        "Student [name=two, age=4, adress=street7]]", 
        list.toString() 
    );
}


public static class Student implements Comparable<Student> {

    String name;
    String age;
    String adress;



    public Student( String name, String age, String adress ) {
        super();
        this.name = name;
        this.age = age;
        this.adress = adress;
    }


    @Override
    public int compareTo( Student o ) {
        if ( o == null ) {
            return -1;
        }

        int compare = name.compareTo( o.name );
        if ( compare != 0 ) {
            return compare;
        }

        compare = age.compareTo( o.age );
        if ( compare != 0 ) {
            return compare;
        }

        return adress.compareTo( o.adress );
    }


    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append( "Student [name=" );
        builder.append( name );
        builder.append( ", age=" );
        builder.append( age );
        builder.append( ", adress=" );
        builder.append( adress );
        builder.append( "]" );
        return builder.toString();
    }

}

}

这篇关于如何通过检查这三个条件对通用列表进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆