Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Arrays类中没有静态方法来交换数组的元素?_Java_Arrays_Swap - Fatal编程技术网

Java 为什么Arrays类中没有静态方法来交换数组的元素?

Java 为什么Arrays类中没有静态方法来交换数组的元素?,java,arrays,swap,Java,Arrays,Swap,我知道这很简单,也很容易理解,但为什么不加上呢 public static void swap(Object[] array, int i, int j) { Object temp = array[i]; array[i] = array[j]; array[j] = temp; } 只调用Arrays.swaparr,i,j要比每次从头开始重新实现要简单得多。主要是因为在所有使用Java的人看来,我们并不真正需要或想要它 请记住,添加到API中的每个方法都是一

我知道这很简单,也很容易理解,但为什么不加上呢

public static void swap(Object[] array, int i, int j) {
     Object temp = array[i];
     array[i] = array[j];
     array[j] = temp;
}

只调用Arrays.swaparr,i,j要比每次从头开始重新实现要简单得多。

主要是因为在所有使用Java的人看来,我们并不真正需要或想要它

请记住,添加到API中的每个方法都是一项长期维护承诺;如果它不能承载自己的重量,它将无法完成。很容易高估我们写给其他人的代码的价值,包括我自己在内,从来没有想到这段代码会对其他人如此有用!;但是您需要在更广泛的Java社区中实际演示一个未满足的需求,这样它才值得采用

只添加一个交换对象数组的方法是任意的:为了完整性和与其他方法的一致性,您还应该为所有8个基本类型添加重载;但这真的值得吗

您可以自己实现,也可以使用Arrays.asList包装阵列:

Collections.swap(Arrays.asList(array), i, j);
在实施说明中,它不需要是通用的

public static void swap(Object[] array, int i, int j) {
     Object temp = array[i];
     array[i] = array[j];
     array[j] = temp;
}

这是可行的,因为数组的差异。

除非Java的API架构师出现,否则我们只能猜测原因。这主要是基于观点。你真的投票来结束你自己的问题吗?@AndyTurner,是的。@Lealcelderio,当然。@GrzegorzGórkiewicz我不知道你能做到这一点。不知怎的,它是为集合而不是数组实现的。我打赌数组是第一个,在那里使用它会更自然。每次我需要写一些没有任何外部依赖的简单的东西,在一个文件中,我将不得不再次编写这个方法,只是为了编译。集合中的swap方法调用中是否存在对象开销?我打赌有。