使用索引号一次排序多个数组?

时间:2016-02-27 08:09:26

标签: java arrays sorting

我正在制作一个小型测验程序,它从txt文件中读取单行答案,并将它们放入单独的数组中,其中一个是名称。

我试图使用索引号一次对多个数组进行排序。我可以对名称进行排序,但答案本身并不排序,例如:

本:

A

C

艾丹:

˚F

我将能够改变他们的名字顺序,但无法弄清楚如何用他们的答案。有什么建议?

这是我到目前为止的代码:

String[] names = new String[4];
String[] answersA = new String[7];
String[] answersB = new String[7];
String[] answersC = new String[7];
String[] answersD = new String[7];
String[] answersE = new String[7];
String[] answersF = new String[7];

try {
    Arrays.sort(names);
} catch (NullPointerException e) {
    System.out.println("meh");
}
for (int i = 0; i < names.length; i++) {
    System.out.println(names[i]);
    System.out.println(answersA[i]);
    System.out.println(answersB[i]);
    System.out.println(answersC[i]);
    System.out.println(answersD[i]);
    System.out.println(answersE[i]);
    System.out.println(answersF[i]);
}

2 个答案:

答案 0 :(得分:2)

如果您的数据在程序中逻辑分组,并且内聚单元具有语义值,则表示程序中的"object"。对象可以包含各种类型的数据,甚至包括其他对象。

对于这种情况,您已经描述了一名学生(带有名字)以及他们对各种测验问题的回答。这里的OOP方法是模拟封装这些数据点的Student类,而不是试图彼此独立地操纵它们。一个有用的练习是考虑你的程序将要解决的所有问题,并思考什么类型的事情构成了这个问题。您可以拥有Student课程和Answer课程来解决当前问题。您的学生有一个名称(只是纯文本)和一系列答案(您可以使用数组,尽管Java List API通常更容易使用)。如果您想跟踪问题陈述及其正确答案,您还可以拥有Question课程。

如果您仍然需要能够对学生进行排序,例如,根据他们在测验中的表现,您可以使用Comparator。找到如何使用它的示例应该不会太难。您还可以让Student类实现Comparable接口,以便按名称对学生进行排序。这将允许您使用Collections.sort方法轻松地对学生集合进行排序。

答案 1 :(得分:0)

如果您可以使用数组列表,以下示例将非常有用:

List<Integer> ids = Arrays.asList(0, 1, 2, 3);
List<String> colors = Arrays.asList("blue", "yellow", "red", "black");
List<String> clothes = Arrays.asList("shoes", "pants", "boots", "coat");

//按ID排序

concurrentSort(ids, ids, colors, clothes);

//按颜色排序

concurrentSort(colors, ids, colors, clothes);

//按衣服排序

concurrentSort(clothes, ids, colors, clothes);

并发排序功能位于:

https://ideone.com/cXdw6T

与此类似,您可以根据姓名对答案列表进行排序。