d*******n 发帖数: 524 | 1 那么int[]跟Integer[]可以mutually交换使用么?
如果有个method是这么定义的
public class SomeClass {
public void f(T[] array);
}
现在想对int[]使用SomeClass的f方法,怎么办?
(就像在C++里面那样,任何用template的地方既可以用class,也可以用int) |
b******y 发帖数: 9224 | 2 java's int and integer is using auto-boxing/auto-unboxing. Syntactic sugar I
think.
Internally, it is just int or Integer object.
So, int[] != Integer[]
Otherwise, it is too much of a waste in terms of memory usage, should you
use simple int[] array. |
d*******n 发帖数: 524 | 3 then what if I want to use the f(T[] array) method in the original post for
int[]?
Is there a way to do this?
I
【在 b******y 的大作中提到】 : java's int and integer is using auto-boxing/auto-unboxing. Syntactic sugar I : think. : Internally, it is just int or Integer object. : So, int[] != Integer[] : Otherwise, it is too much of a waste in terms of memory usage, should you : use simple int[] array.
|
d*******n 发帖数: 524 | 4 原本的问题是这样的,我写了一个QuickSorter,如下。但是这样好像只能sort各种
Object的数组,而不能sort built-in 的变量的数组比如int[]
import java.util.Random;
public class QuickSorter> {
public static final Random Rnd = new Random();
public void quickSort(T[] array) {
quickSort(array, 0, array.length-1);
}
private void quickSort(T[] array, int begin, int end) {
if(end > begin) {
int finalPivotPosition = partition(array, begin, end);
quickSort(array, begin, |
b******y 发帖数: 9224 | 5
for
I think you'd have to do a loop and get the value from the Integer array and
store the int value into the int array.
Example:
int[] intArr = new int[integerArr.length];
for (int i = 0; i < integerArr.length; i++)
{
intArr[i] = integerArr[i];
}
【在 d*******n 的大作中提到】 : then what if I want to use the f(T[] array) method in the original post for : int[]? : Is there a way to do this? : : I
|
b******y 发帖数: 9224 | 6 basically, the int[] array stores the int values, the Integer[] array only
stores the pointers to the Integer objects. |
F****n 发帖数: 3271 | 7 There's no way to do that. Otherwise Java collection would have supported
primitive data types for a long time.
for
【在 d*******n 的大作中提到】 : then what if I want to use the f(T[] array) method in the original post for : int[]? : Is there a way to do this? : : I
|
d*******n 发帖数: 524 | 8 这么说我刚刚问的那个问题的答案也是no了。。。。。
sigh......
这大概是我发现的第一个Java不如C++方便的地方了。
【在 F****n 的大作中提到】 : There's no way to do that. Otherwise Java collection would have supported : primitive data types for a long time. : : for
|
A**o 发帖数: 1550 | 9 java的范型和数组交叉的时候是比较难看的。
【在 d*******n 的大作中提到】 : 这么说我刚刚问的那个问题的答案也是no了。。。。。 : sigh...... : 这大概是我发现的第一个Java不如C++方便的地方了。
|
g*****g 发帖数: 34805 | 10 You can use List/Vector instead. then it would be much more elegant.
【在 d*******n 的大作中提到】 : 那么int[]跟Integer[]可以mutually交换使用么? : 如果有个method是这么定义的 : public class SomeClass { : public void f(T[] array); : } : 现在想对int[]使用SomeClass的f方法,怎么办? : (就像在C++里面那样,任何用template的地方既可以用class,也可以用int)
|
m******t 发帖数: 2416 | 11
You would have to supply overloaded API for each primitive type.
See the Arrays.sort() family...
No, wait, Arrays.sort() does quicksort already, so...
【在 d*******n 的大作中提到】 : 原本的问题是这样的,我写了一个QuickSorter,如下。但是这样好像只能sort各种 : Object的数组,而不能sort built-in 的变量的数组比如int[] : import java.util.Random; : public class QuickSorter> { : public static final Random Rnd = new Random(); : : public void quickSort(T[] array) { : quickSort(array, 0, array.length-1); : } :
|