所以我想要做的是将我的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