java - 同时排序两个数组

标签 java arrays sorting

我现在正在学习和理解 Java,在练习数组时我有一个疑问。我写了以下代码作为示例:

class example
{
    public static void main(String args[])
    {
        String a[] = new String[] {"Sam", "Claudia", "Josh", "Toby", "Donna"};
        int b[] = new int[] {1, 2, 3, 4, 5};

        for(int n=0;n<5;n++)
        {
            System.out.print (a[n] + "...");
            System.out.println (b[n]);
        }
        System.out.println (" ");

        java.util.Arrays.sort(a);

        for(int n=0;n<5;n++)
        {
            System.out.print (a[n] + "...");
            System.out.println (b[n]);
        }
    }

简而言之,这个类创建了两个数组,每个数组有五个空格。它用西翼人物的名字填充一个,并用从一到五的编号填充另一个。我们可以说这两个字符串中的数据是相互对应的。

现在,程序使用 Arrays.sort() 对包含名称的数组进行排序。 .再次打印数组后,您可以看到虽然名称现在按字母顺序排列,但由于第二个数组未更改,因此数字不再对应。

如何打乱第二个数组的内容以匹配第一个数组的排序要求? 解决方案还必须灵活,以允许更改程序的范围和大小。请不要发布任何要求我改变数组方法的答案,或者提出一种更“有效”的做事方式。这是出于教育目的,我想要提供的示例代码的直接解决方案。提前致谢!

编辑:我不想创建一个额外的类,但是我认为通过嵌套循环进行排序的某种形式可能是一个选项,而不是 Arrays.sort()。

最佳答案

以下是不使用任何 Map 的代码 Collection ,但如果你想使用 Map然后就变得很容易了。将两个数组添加到 map 中并对其进行排序。

public static void main(String args[]) {
    String a[] = new String[] {
        "Sam", "Claudia", "Josh", "Toby", "Donna"
    };
    int b[] = new int[] {
        1, 2, 3, 4, 5
    };
    for (int n = 0; n < 5; n++) {
        System.out.print(a[n] + "...");
        System.out.println(b[n]);
    }
    System.out.println(" ");
    //java.util.Arrays.sort(a);
    /* Bubble Sort */
    for (int n = 0; n < 5; n++) {
        for (int m = 0; m < 4 - n; m++) {
            if ((a[m].compareTo(a[m + 1])) > 0) {
                String swapString = a[m];
                a[m] = a[m + 1];
                a[m + 1] = swapString;
                int swapInt = b[m];
                b[m] = b[m + 1];
                b[m + 1] = swapInt;
            }
        }
    }
    for (int n = 0; n < 5; n++) {
        System.out.print(a[n] + "...");
        System.out.println(b[n]);
    }
}

关于java - 同时排序两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339015/

相关文章:

java - 在 Android 应用程序中使用 XML 更改进度条颜色

java - 作为 Upstart 服务启动时无法读取 UTF-8 文件名

java - 将 key 发送到另一个应用程序

java - 以同样的方式对两个列表进行排序

java - 转义序列未按预期工作

c++ - 如何将结构放入 union 中

java - 如何从一组日期中减去一个日期?

java - 在 Java 中调整矩阵的大小

Python 函数没有响应

java - 如果 ArrayList 的已排序 Collection 扩展到超过其初始大小,它会变为未排序吗?