【问题标题】:about sorting arrays in java关于java中的数组排序
【发布时间】:2010-06-21 11:53:19
【问题描述】:

我有 3 个数组 (A,B,C),A 有自己的整数 10,C 有自己的整数 8,B 有自己的整数 5,我如何使用整数对数组进行排序,然后返回这些数组?? 这意味着您对整数进行排序:5、8、10,我想返回它们的数组:B、C、A 我怎样才能做到这一点?请帮帮我谢谢

【问题讨论】:

  • 这是作业吗?数组是否保证恰好包含 1 个元素?如果不是,您一般如何定义它们的排序顺序?
  • 这不是我的家庭作业我已经为这些数组找到了这些整数,然后我用这些整数对这些数组进行了排序,但我不知道如何返回它们的数组?
  • 但是如果它们包含多个元素怎么办?你能有 A {5, 10}, B {6, 11}, C { 1, 6} 吗?那你会返回什么?我认为您需要更多地定义问题。

标签: java arrays


【解决方案1】:

我已经为这些数组找到了这些整数,然后我用这些整数对这些数组进行了排序,但我不知道如何返回它们的数组?

您不能从一个方法返回 3 个对象。相反,您可以按所需顺序将它们放在ArrayList 中,并将其返回为List。例如:

class MyArrayComparator implements Comparator<int[]> {
    public int compare(int[] a1, int[] a2) {
        int sn1 = getThatSpecialNumber(a1);
        int sn2 = getThatSpecialNumber(a2);
        if (sn1 == sn2)
            return 0;
        else if (sn1 < sn2)
            return -1;
        else
            return 1;
    }
}

List orderArrays(int[] a, int[] b, int[] c) {
    List<int[]> list = new ArrayList<int[]>();

    list.add(a);
    list.add(b);
    list.add(c);
    Collections.sort(list, new MyArrayComparator());
    return list;
}

【讨论】:

  • 这还能编译吗? Collections.sort 返回 void,对吗?
【解决方案2】:

我不确定“有自己的整数”是什么意思,但是您可以将它们存储到即java.util.ArrayList,然后搜索该值,即:

ArrayList list = new ArrayList();
....
int number_we_are_searching_for = 12345;
int i = 0;
YourArray a = null;
while(i < list.size())
{
    if(list.get(i).SomehowRetrieveThatNumber() == number_we_are_searching_for)
    {
        a = list.get(i);
        break;
    }
    i++;

}

编辑:或按所需顺序添加它们(添加时对其进行排序)。

【讨论】:

    【解决方案3】:
    final int[] a = { 10 }, b = { 5 }, c = { 8 };
    
    // put them in an array. (a List<int[]> works too)
    int[][] arrs = { a, b, c };
    
    // sort them using a custom comparator
    // (Change "Arrays" to "Collections" if you used a List above)
    Arrays.sort(arrs, new Comparator<int[]>() {
        public int compare(int[] o1, int[] o2) {
            return ((Integer) o1[0]).compareTo(o2[0]);
        }
    });
    
    // Print result and return it:
    for (int[] arr : arrs)
        System.out.println(Arrays.toString(arr));
    
    return arr;
    

    输出:

    [5]
    [8]
    [10]
    

    【讨论】:

    • 我需要输出数组而不是这些数字,我该怎么做?
    • o1[0] - o2[0] 可能会溢出较大的值,从而给出不正确的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2023-03-06
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多