【发布时间】:2014-06-13 21:03:04
【问题描述】:
我现在正在学习和理解 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() 的选项。
【问题讨论】:
-
是否必须只使用 java.util.Array.Sort()?你为什么不写你的排序方法?
-
可以使用自定义排序方法。
-
在我看来,编写模棱两可和不清楚的代码听起来不是“教育目的”。创建其他对象并正确执行。
-
你不理解我,我这样做不是为了解决我的问题,我想发现一种仅使用循环将数组排序在一起的方法。对我来说,学习不仅仅是找到问题的解决方案,而是学习所有可能的解决方案。