【问题标题】:Sort Array By variable in the first then sort it descending order首先按变量排序数组,然后按降序排序
【发布时间】:2011-12-30 19:22:17
【问题描述】:

大家好,这是我的问题。 我正在使用 JCombobox。 如果学生在课程中有 CB 成绩,则应首先出现在 jcombobox 中,例如 CB AA BA BB CC DC DD FD FF 如果学生的成绩为 DD,则应显示为 DD AA BA BB CB CC DC FD FF。

这里所有的数组成员

String[] 子集 = new String[]{“AA”、“BA”、“BB”、“CB”、“CC”、“DC”、“DD”、“FD”、“FF”};

如果学生在课程数组中的成绩为 BB,则应按照 BB AA BA BB CB CC DC DD FD FF 的方式进行排序。这些平均数组应在数组的第一个元素中按学生成绩排序。那么它应该按降序排序。

我问排序数组,因为 jcombobox 可以解决这个问题。 有没有这样的功能或方法?

谢谢。

【问题讨论】:

  • 排序标准一点都不清楚。请更好地解释您的需求,并展示几个示例

标签: java arrays swing sorting comparator


【解决方案1】:

这个怎么样:

public static String[] getCustomSortArray(String grade, String[] grades)
{
    int index = -1;
    for(int i = 0; i < grades.length; i++)
    {
        if(grades[i].equals(grade))
        {
            index = i;
            break;
        }
    }

    if(index == -1) return grades;

    String temp = new String[grades.length];
    temp[0] = grades[index];

    int counter = 1;
    for(int i = 0; i < grades.length; i++)
    {
        if(i != index) temp[counter++] = grades[i];
    }
    return temp;
}

我没有测试它,但我认为它有效。

【讨论】:

  • 我正在尝试测试您的方法,但 Eclipse 给了我空指针异常。努力解决
  • 谢谢,我终于明白了,你很酷的人 :D :D 我没有足够的重复来投票给你。每当我有 15 个代表时,我会代表你非常感谢
  • @user1091692 不客气,您至少可以通过检查正确的标记来接受这个答案:)
【解决方案2】:

您始终可以使用Arrays.sort() 根据给定的Comparator 对数组中的元素进行排序,在这种情况下,您需要制作比较器以满足您的需求。

【讨论】:

    【解决方案3】:

    对于你可以使用的排序数组,它使用 Comparable 接口的 compareTo() 方法进行排序。

    Arrays.sort(array);
    

    对于降序排序,您可以使用Collections.reverseOrder() 比较器。

    如果我理解正确的话,这个比较器可以为你工作。

            Object yourComparator = new Comparator<Comparable<Object>>() {
                @Override
                public int compare(Comparable<Object> c1, Comparable<Object> c2) {
                    if(c1.equals(variable)){
                        return 1;
                    }
                    else if(c2.equals(variable)){
                        return -1;
                    }
                    else {
                        return c2.compareTo(c1);
                    }
    
                }
    
    
    
            };
    

    【讨论】:

    • 我想先按变量排序,然后再降序。
    • 你所说的“变量”是什么意思?什么变量?
    • CB 在这里是第一个变量:如果学生在课程中有 CB 成绩,它应该首先出现在 jcombobox 中,如 CB AA BA BB CC DC DD FD FF 如果学生有 DD 成绩 DD是这里的第一个变量:它应该显示为 DD AA BA BB CB CC DC FD FF。
    • 谢谢你,但我是 Java 新手。我很难理解您的代码,您能否举一些例子说明如何使用您的方法。我的意思是我如何使用比较功能。我必须给它两个对象吗?
    猜你喜欢
    • 2023-03-05
    • 2013-06-29
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2013-08-29
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多