如何对此进行排序
String [][] Array11= {{array[i]},{array2[i]},{array3[i]}};
关于我试图工作的简要说明: 数组包含学生ID号 array2包含学生姓名 array3包含学生课程。 所有这些都是STRING ARRAYS
如果我输入:
身份证号码:5 姓名:A 课程:CS
身份证号码:3 姓名:B 当然:IT
我应该按ID号对它进行排序,以便输出看起来像这样
身份证号码名称课程 3 B IT 5 A CS
或者如果您对如何使其有任何其他建议,请帮助我。 :)
答案 0 :(得分:2)
您应该使用Student
的1D数组替换您的2D字符串数组,在其中创建一个Student
类,其中包含属性" id"," name& #34;和"当然"。
然后你创建一个实现Comparator<Student>
的类,比如说StudentComparator
。其compare
方法应返回一个负数,0
或一个正数,具体取决于第一个Student
与第二个Student
的比较是否小于,等于,或者大于。
答案 1 :(得分:0)
您需要创建自定义Comparator
。
查看Column Comparator它提供了两种方法:
ColumnComparator
作为可重用的比较器,只需指定要排序的列的索引。或者更好的设计是创建一个自定义学生对象来存储学生的属性(Id,Name,Course),然后你可以使用Bean Comparator来排序班级中的任何属性
答案 2 :(得分:0)
存储数据的方式不合适。我建议你为实现可比较的学生定义一个课程。然后覆盖compareTo()函数,使其按课程id
进行比较 public class Student implements Comparable<Student >
{
public int id;
public String name;
public String course;
public int compareTo(Student s)
{
if(s ==null)
return 1;
return id - s.id;
}
}
现在您可以将所有学生存储在ArrayList中,如下所示:
Student [] studentsList = new Student [sizeOfStudent];
现在您可以使用Arrays实用程序排序方法进行排序:
Arrays.sort(studentsList);
注意:如果您想使用不同的数据结构,那么我建议使用ArrayList而不是Array。
答案 3 :(得分:0)
执行此操作的最佳方法是停止假装您正在使用C并开始实际使用Java。
第1步:创建一个包含学生ID,学生姓名和学生课程的对象。
第2步:将这些对象存储在有意义的集合(数组,列表,其他)中。
第3步;对集合进行排序。
这里有一些代码:
public class StudentBlam implements Comparable<StudentBlam>
{
private final String course;
private final String id;
private final String name;
public StudentBlam(
final String course,
final String id,
final String name)
{
this.course = course;
this.id = id;
this.name = name;
}
@Override
public int compareTo(final StudentBlam other)
{
return id.compareTo(other.getId());
}
public String getCourse()
{
return course;
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
}