如何通过仅使用其中一个的元素来排序关联的数组?

时间:2015-04-29 14:23:48

标签: java arrays

任务是创建一个程序,该程序用相应的标记组织用户名,并按降序显示。我问的是如何同时对两个数组进行排序,只是通过比较其中一个数组的元素。作为限制,我不能使用类,只能使用关联的数组。

KalturaMediaEntryFilter filter = new KalturaMediaEntryFilter(); 
filter.typeIn = "1"; 
filter.orderBy = KalturaMediaEntryOrderBy.NAME_DESC.toString(); 
KalturaMediaListResponse listResponse = mediaService.list(filter);

接受用户输入的按钮

int [] ArrMarks = new int [5];
String [] ArrNames = new String [5];

显示按钮,包括对代码进行分类的部分,这是我不确定的主要部分。

for (int i = 0; i < 5; i++)
{
    ArrNames[i] = JOptionPane.showInputDialog("Enter a Name:");
    ArrMarks[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter a mark:")); 
}

2 个答案:

答案 0 :(得分:2)

首先,我想提出一个建议。使用列表而不是数组。这种编码不是一种很好的传统编码方式。我将展示一种处理问题的传统方法。如果你愿意,可以选择这个。

使用以下内容创建另一个类Mark.java

class Mark {
    Integer mark;
    String name;

    public Integer getMark() {
        return this.mark
    }
    public void setMark(Integer mark) {
        this.mark = mark
    }
    public String getName() {
        return this.name
    }
    public void setName(String name) {
        this.name = name
    }
}

然后在您当前的课程中创建此课程的List

List<Mark> marks = new ArrayList<Mark>();

然后,在阅读用户的内容后,您可以将其添加到列表中,如下所示

for (int i = 0; i < 5; i++)
{
    Mark mark = new Mark();
    String name = JOptionPane.showInputDialog("Name:");
    Integer mark = Integer.parseInt(JOptionPane.showInputDialog("Mark:")); 
    marks.add(mark)
}

编写一个名为MarkComparator.java的比较器类。它涉及排序部分。

public class MarkComparator implements Comparator<Mark> {
    @Override
    public int compare(Mark m1, Mark m2) {
        return m1.getMark().compareTo(m2.getMark());
    }
}

使用

Collections.sort(marks, new MarkComparator());

现在List<Mark>的{​​{1}}将被排序。

然后您可以以相同的方式查看列表。

marks

答案 1 :(得分:1)

我的问题的解决方案需要使用排序技术对名称和标记进行排序,以便程序将相应的标记打印到名称。

for(int i = 0; i < 5-1; i ++)
{
    for(int j = i +1; j < 5; j++)
{
 if (ArrMarks[i] < ArrMarks[j]) 

 {
    //sorting the names
    String temp = ArrNames[i];
    ArrNames[i] = ArrNames[j];
    ArrNames[j] = temp;

    //sorting the marks
    int temp1 = ArrMarks[i];
    ArrMarks[i] = ArrMarks[j];
    ArrMarks[j] = temp1;  

}  

}   
txaDisplay.append("Names:"+"\t\t"+"Marks"+"\n");

        txaDisplay.append(ArrNames[i]+"\t\t"+ArrMarks[i]+"\n"); 
}