所以我想要做的是將我的Array類中的一些方法從常規數組轉換爲ArrayList。但是,我遇到了兩個不同的問題。首先,在顛倒ArrayList的順序的同時,我注意到奇怪的是它打印出來,如果我有6個整數,並且我正在嘗試反轉,它會打印出前3個索引位置以及實際的整數最後3.例如它會打印出來:倒序:5,4,3,96,87,24,順序:假。我想要它打印出來的是941,874,102,96,87,24,依次爲:錯誤。關於我的兩個數組列表的合併,我不確定它是否會正確合併,因爲我不知道如何轉換此行代碼以打印出ArrayList。我用這兩行代碼最初打印出我的合併數組。顛倒ArrayList的順序併合並兩個ArrayLists
int merged[] = merge(num3,num4);
print(merged);
下面是我使用的扭轉ArrayList中的方法和合並方法之二:
/*** <<< CODE NOT COMPLETE >>>
* reverses the order of the elemets in the array
***/
public static void reverse(ArrayList <Integer> a)
{
for (int i = 0; i < a.size()/2; i++)
{
int reverseOrder = a.get(i);
a.set(i, a.size() - 1 - i);
a.set(a.size() - 1 - i, reverseOrder);
}
}
/*** <<< CODE NOT COMPLETE >>>
* merges two sorted arrays into 1 new array, maintains the sorted order
***/
public static ArrayList <Integer> merge (ArrayList <Integer> a, ArrayList <Integer> b)
{
ArrayList <Integer> merge = new ArrayList <Integer> (a.size() + b.size());
int i = 0, j = 0, k = 0;
while (i < a.size() && j < b.size())
{
if (a.get(i) < b.get(j))
{
merge.set(k++, a.get(i++));
}
else
{
merge.set(k++, b.get(j++));
}
}
while (i < a.size())
{
merge.set(k++, a.get(i++));
}
while (j < b.size())
{
merge.set(k++, b.get(i++));
}
return merge;
}
謝謝。這工作。現在,我將如何更改我的主要應該打印我的兩個合併方法的代碼行? – CrypticZero
'ArrayList merged = merge(num3,num4);' –
謝謝,我以爲我曾嘗試過,但我猜我輸入錯誤。這讓我編譯它,但當我試圖運行它時,我得到了一個indexOutOfBoundsException錯誤。它突出了merge.set(k ++,a.get(i ++)); 在我的合併方法。 – CrypticZero