我的問題是我想扭轉一個數組。我發現這種方法顯然是用於這個是使用如何將Collection.reverse存儲回數組?
Collections.reverse(Arrays.asList(arrx));
但是,我想將它存儲回陣列供將來使用。 我並不十分熟悉Collections,但是我將它放在一個數組中,但是我把它放在一個數組中,我有點遺失。 你會怎麼做呢? 謝謝。
我的問題是我想扭轉一個數組。我發現這種方法顯然是用於這個是使用如何將Collection.reverse存儲回數組?
Collections.reverse(Arrays.asList(arrx));
但是,我想將它存儲回陣列供將來使用。 我並不十分熟悉Collections,但是我將它放在一個數組中,但是我把它放在一個數組中,我有點遺失。 你會怎麼做呢? 謝謝。
那麼for循環呢?它會像:
static void reverse(int[] t){
for(int x=0; x<t.length/2; x++){
int y = t[x];
t[x] = t[t.length - 1 - x];
t[t.length - 1 - x] = y;
}
}
Collections.toArray()是你的朋友。它有兩種方法:類型安全型和非類型安全型(首選使用類型安全)。
Integer[] a = new Integer[] {1,2,3};
List<Integer> l = Arrays.asList(a);
Collections.reverse(l);
l.toArray(a);
如果可能的話,使用集合而不是數組是最佳實踐。
考慮下列因素略有學術,但是我覺得這應該指出的:
Arrays#asList
會給你一個「視圖」提供的陣列上。 JavaDoc說:「返回由指定數組支持的固定大小的列表。(對返回列表進行」直寫「到數組的更改。)」。看你的例子:
String[] arrx = {"alpha", "beta", "gamma"};
Collections.reverse(Arrays.asList(arrx));
System.out.println(Arrays.toString(arrx)); // [gamma, beta, alpha]
......這意味着,原來的陣列arrx
將被顛倒。如果你只需要反轉的數組,一切都很好。但是:如果您仍需要原始數組,扭轉之前創建一個副本:
String[] arrx = {"alpha", "beta", "gamma"};
List temp = new ArrayList(Arrays.asList(arrx));
Collections.reverse(temp);
Object[] reversedArrx = temp.toArray();
System.out.println(Arrays.toString(arrx)); // [alpha, beta, gamma]
System.out.println(Arrays.toString(reversedArrx)); // [gamma, beta, alpha]
(略去了泛型)。
當我嘗試這個時,我的Java編譯器給了我多個錯誤。 – ajb 2014-09-27 01:22:32
@ajb是的,這不是Java,但你有想法。 – gwenzek 2014-09-27 08:08:56
通常,如果有人提出有關Java的問題,並且只有Java,並且在問題上具有'java'標記,則用另一種語言回答是不合適的。無論如何,它並不回答問題。他想知道如何使用Java中已有的'reverse'方法來反轉數組,而不是用於反轉數組的一般算法。 – ajb 2014-09-27 09:02:35