gpt4 book ai didi

java - 获取 ArrayList>() 的值(字符串);在 java

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:10 24 4
gpt4 key购买 nike

我知道这是个简单的问题,但是在

ArrayList<ArrayList<String>> collection;
ArrayList<String> listOfSomething;

collection= new ArrayList<ArrayList<String>>();
listOfSomething = new ArrayList<String>();

listOfSomething.Add("first");
listOfSomething.Add("second");
collection.Add(listOfSomething);
listOfSomething.Clear();
listOfSomething.Add("first");
collection.Add(listOfSomething);

我想从 ArrayList 的 ArrayList 中取出 String,但我不知道该怎么做。比如我去

ArrayList<String> myList = collection.get(0); 
String s = myList.get(0);

而且有效!但是:

重大更新:

private List<S> valuesS;
private List<Z> valuesZ;


ArrayList<ArrayList<String>> listOfS;
ArrayList<String> listOfZ;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Zdatasource = new ZDataSource(this);
Zdatasource.open();
valuesZ = Zdatasource.getAllZ();

Sdatasource = new SDataSource(this);
Sdatasource.open();
valuesS = Sdatasource.getAllS();

List<Map<String, String>> groupData
= new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData
= new ArrayList<List<Map<String, String>>>();

listOfS = new ArrayList<ArrayList<String>>();
listOfZ = new ArrayList<String>();
for (S i : valuesS) { // S is class
for (Z j : valuesZ) { // Z is class
if(j.getNumerS().equals(i.getNumerS())) {
listOfZ.add(j.getNumerZ());
}
else
{
//listOfZ.add("nothing");
}
}
listOfS.add(listOfZ);
if(!listOf.isEmpty()) listOfZ.clear();
}



@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
int childPosition, long id) {
try
{
ArrayList<String> myList = listOfS.get(groupPosition);
String s = myList.get(childPosition);
PrintToast("group "+Integer.toString(groupPosition)+", child "+Integer.toString(childPosition) + " , "+ s);
}
catch(Exception e)
{
Log.e("FS", e.toString());
}
return true;
}

返回 java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0当我点击真正应该存在的项目时。我没有显示生成 ListView 的代码,但我可以告诉你我的 listOfS 包含 3 个项目:第一个是 Null listOfZ,第二个 listOfZ 有 2 个元素,第三个 listOfZ 有 1 个元素。

最佳答案

listOfSomething.Clear();
listOfSomething.Add("first");
collection.Add(listOfSomething);

您正在清除此处的列表并添加一个元素(“第一个”),listOfSomething 的第一个引用也会更新,因为两者都引用相同的对象,所以当您访问第二个元素时 myList.get(1)(不再存在)你得到空值。

请注意 collection.Add(listOfSomething); 都保存了对同一个 arraylist 对象的两个引用。

您需要为两个元素创建两个不同的实例:

ArrayList<ArrayList<String>> collection = new ArrayList<ArrayList<String>>();

ArrayList<String> listOfSomething1 = new ArrayList<String>();
listOfSomething1.Add("first");
listOfSomething1.Add("second");

ArrayList<String> listOfSomething2 = new ArrayList<String>();
listOfSomething2.Add("first");

collection.Add(listOfSomething1);
collection.Add(listOfSomething2);

关于java - 获取 ArrayList<ArrayList<String>>() 的值(字符串);在 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944601/

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