Java 如何对二维字符串数组进行排序?
你怎么分类Java 如何对二维字符串数组进行排序?,java,arrays,sorting,multidimensional-array,comparator,Java,Arrays,Sorting,Multidimensional Array,Comparator,你怎么分类 String [][] Array11= {{array[i]},{array2[i]},{array3[i]}}; 关于我尝试工作的简要说明: 数组包含学生ID号 array2包含学生姓名 阵列3包含学生课程。 它们都是字符串数组 如果我输入: 1: 身份证号码:5 姓名:A 课程:CS 2: 身份证号码:3 姓名:B 课程:IT 我应该按照它的ID号对它进行排序,这样输出就会如下所示 身份证号码姓名课程 3 B它 5 A CS 或者,如果您对如何使其工作有任何其他建议,请帮助
String [][] Array11= {{array[i]},{array2[i]},{array3[i]}};
关于我尝试工作的简要说明:
数组包含学生ID号
array2包含学生姓名
阵列3包含学生课程。
它们都是字符串数组
如果我输入:
1:
身份证号码:5
姓名:A
课程:CS
2:
身份证号码:3
姓名:B
课程:IT
我应该按照它的ID号对它进行排序,这样输出就会如下所示
身份证号码姓名课程
3 B它
5 A CS
或者,如果您对如何使其工作有任何其他建议,请帮助我。:) 您需要创建一个自定义的
比较器
检查它提供了两种方法:
ColumnParator
用作可重用的比较器或者更好的设计是创建一个自定义的Student对象来存储学生的属性(Id、姓名、课程),然后您可以使用对类中的任何属性进行排序。您应该将2D字符串数组替换为
Student
s的1D数组,在该数组中创建一个具有属性的Student
类“id”、“姓名”和“课程”
然后创建一个实现
Comparator
的类,比如StudentComparator
。它的compare
方法应该返回一个负数、0
,或者一个正数,这取决于第一个Student
与第二个Student
的比较是小于、等于还是大于。 您存储数据的方式不合适。我建议您为您的学生定义一个实现Comparable.Then overide 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;
}
}
现在,您可以使用Arrays实用程序排序方法进行排序:
Arrays.sort(studentsList);
注意:如果您想使用不同的数据结构,那么我建议使用ArrayList而不是数组。最好的方法是停止假装使用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;
}
}
public class StudentBlam实现可比性
{
私人最后弦乐课程;
私有最终字符串id;
私有最终字符串名;
公立学生(
最后的弦乐课程,
最终字符串id,
最终字符串名)
{
本课程=课程;
this.id=id;
this.name=名称;
}
@凌驾
公共int比较(最终学生归咎于其他)
{
返回id.compareTo(other.getId());
}
公共字符串getCourse()
{
返回路线;
}
公共字符串getId()
{
返回id;
}
公共字符串getName()
{
返回名称;
}
}
将数据存储在2d数组中有什么原因吗?鉴于行似乎是不同的数据,最好将该数据存储在实际对象中,然后创建一个对象数组。将数据存储在2d数组中会混淆其中包含的实际数据。
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;
}
}