gpt4 book ai didi

java - 如何通过检查这 3 个条件对通用列表进行排序

转载 作者:行者123 更新时间:2023-12-01 11:21:55 25 4
gpt4 key购买 nike

如果我们有如下列表

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

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

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

它正在打印卷号列表,但我现在不知道如何对它们进行排序。

最佳答案

使用Comparable和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();
}

}

}

关于java - 如何通过检查这 3 个条件对通用列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31122387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com