gpt4 book ai didi

java - 如何将两个数组列表的对象在指定索引处相互传递

转载 作者:行者123 更新时间:2023-12-02 04:17:51 25 4
gpt4 key购买 nike

因此,我尝试按对象区域的顺序打印数组列表。然而,我似乎无法弄清楚如何在索引处将对象的值传递给另一个对象。 (我必须递归地执行)。这是迄今为止我的代码

private static void recursionSort(ArrayList<GeometricObject> data)
{
if(data.size() <= 1) return; // Base case: just 1 elt

ArrayList<GeometricObject> a = new ArrayList<GeometricObject>(data.size() / 2);
ArrayList<GeometricObject> b = new ArrayList<GeometricObject>(data.size() - a.size()); // Split array into two
// halves, a and b
for(int i = 0; i < data.size(); i++)
{
if(i < a.size())
a.indexOf(i) = data.get(i);
else
b.get(i - a.size()) = data.get(i);
}

recursionSort(a); // Recursively sort first
recursionSort(b); // and second half.

int ai = 0; // Merge halves: ai, bi
int bi = 0; // track position in
while(ai + bi < data.size()) { // in each half.
if(bi >= b.size() || (ai < a.size() && a.get(ai).getArea() < b.get(bi).getArea())) {
data.get(ai + bi) = a.get(ai); // (copy element of first array over)
ai++;
} else {
data.get(ai + bi) = b.get(bi); // (copy element of second array over)
bi++;
}
}
}

我的问题是线条

a.indexOf(i) = data.get(i);
b.get(i - a.size()) = data.get(i);
data.get(ai + bi) = a.get(ai);
data.get(ai + bi) = b.get(bi);

例如,我不知道如何让 a 在 0 处的索引等于我的列表(数据)索引 0。如果这些是数组,我会知道该怎么做,所以让我将其用作一个例子向您展示我试图通过数组列表完成什么

a[i] = data[i]; // First line in block above
data[ai + bi] = b[bi]; // Last line in block above

任何帮助将不胜感激。我已经浏览了我书中的 ArrayList 类方法列表中找到的几乎所有方法,但没有一个具有我正在寻找的预期效果。谢谢!

最佳答案

List 接口(interface)定义了 set(int index, E element) (E = GeometricObject本案)。因此,您遇到问题的四行应该重写如下:

a.set(i, data.get(i));
b.set(i - a.size(), data.get(i));
data.set(ai + bi, a.get(ai));
data.set(ai + bi, b.get(bi));

希望这有帮助...

杰夫

关于java - 如何将两个数组列表的对象在指定索引处相互传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33116198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com