gpt4 book ai didi

java - 访问 ArrayList> 元素

转载 作者:行者123 更新时间:2023-11-30 09:23:53 24 4
gpt4 key购买 nike

我有一个 ArrayListArrayList ,我需要找到一种访问元素的简单方法,以便更容易理解我已经制定了我的目标我想实现:

enter image description here

如上图所示,主要的 ArrayListm ArrayList 组成,我希望通过使用 获取元素>get 方法从 0 到 N 个元素,其中 NArrayList1ArrayList2< 的总元素。可能会出现更多 ArrayList。

我当然可以使用两个 for 循环遍历元素,这不是我在这种情况下搜索的内容。

最佳答案

您基本上需要在新的包装类中包含 ArrayList 成员,并以不同的方式实现它们。我制作了一个示例,演示了在 get() 中计算的正确索引。

import java.util.ArrayList;

public class ListHolder<T> {
public ArrayList<ArrayList<T>> list = new ArrayList<ArrayList<T>>();

public int size() {
int size = 0;
for (int i = 0; i < list.size(); i++) {
size += list.get(i).size();
}
return size;
}

public T get(int i) {
if (i >= size())
return null;

int listIndex = 0;
int valueIndex = i;

while (valueIndex >= list.get(listIndex).size()) {
valueIndex -= list.get(listIndex++).size();
}

return list.get(listIndex).get(valueIndex);
}
}

我用什么来验证我的方法:

public static void main(String[] args)
{
ListHolder<Object> listHolder = new ListHolder<Object>();

listHolder.list.add(new ArrayList<Object>());
listHolder.list.get(0).add("hello");
listHolder.list.get(0).add("world");

listHolder.list.add(new ArrayList<Object>());
listHolder.list.get(1).add("a");
listHolder.list.get(1).add("b");
listHolder.list.get(1).add("c");

System.out.println("Size: " + listHolder.size());
System.out.println("listHolder[0]: " + listHolder.get(0)); // "hello"
System.out.println("listHolder[1]: " + listHolder.get(1)); // "world"
System.out.println("listHolder[2]: " + listHolder.get(2)); // "a"
System.out.println("listHolder[3]: " + listHolder.get(3)); // "b"
System.out.println("listHolder[4]: " + listHolder.get(4)); // "c"
System.out.println("listHolder[5]: " + listHolder.get(5)); // "null"
}

关于java - 访问 ArrayList<ArrayList<SomeObject>> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15850201/

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