gpt4 book ai didi

java - 同时排序两个数组

转载 作者:行者123 更新时间:2023-12-01 13:57:59 26 4
gpt4 key购买 nike

我现在正在学习和理解 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com