我有一个包含两个列表的arraylist 像这样
[[asd, asswwde, efef rgg], [asd2223, asswwd2323e, efef343 rgg]]
我的代码是
ArrayList<String> create = new ArrayList<String>();
ArrayList<String> inner = new ArrayList<String>();
ArrayList<String> inner1 = new ArrayList<String>();
inner.add("asd");
inner.add("asswwde");
inner.add("efef rgg");
inner1.add("asd2223");
inner1.add("asswwd2323e");
inner1.add("efef343 rgg");
create.add(inner.toString());
create.add(inner1.toString());
我必须逐一获得该arraylist
的每个索引的所有值那么逐一获得这些价值的最佳途径是什么? 我在Eclipse Mars中使用JAVA。
答案 0 :(得分:3)
只需使用两个嵌套循环:
List<List<Object>> list = ...;
for (List<Object> subList : list) {
for (Object o : subList) {
//work with o here
}
}
您可能还想考虑用适当的对象替换内部列表。
答案 1 :(得分:1)
您希望循环遍历外部ArrayList
,然后循环浏览此ArrayList
中的每个ArrayList
,您可以使用以下内容执行此操作:
for (int i = 0; i < outerArrayList.size(); i++)
{
for (int j = 0; j < outerArrayList.get(i).size(); j++)
{
String element = outerArrayList.get(i).get(j);
}
}
以下是您可能更容易理解的另一个版本,但基本相同:
for (int i = 0; i < outerArrayList.size(); i++)
{
ArrayList<String>() innerArrayList = outerArrayList.get(i)
for (int j = 0; j < innerArrayList.size(); j++)
{
String element = innerArrayList.get(j);
}
}
或者再次使用foreach
循环:
for (ArrayList<String> innerArrayList : outerArrayList)
{
for (String element : innerArrayList)
{
String theElement = element;
}
}
值得注意的是,您的ArrayList似乎包含不同类型的元素 - 这绝对是您想要做的吗?此外,请确保用#34;&#34;除非它们是变量名称 - 它不会出现。
编辑:根据您的更新更新元素以键入字符串。
我还建议您更改创建ArrayList
的类型,如下所示,因为您知道它将存储多个ArrayList
类型的元素:
ArrayList<ArrayList> create = new ArrayList<ArrayList>();
答案 2 :(得分:1)
尝试使用嵌套在for
循环中的foreach
循环,如下所示:
for(List list : arrayListOfList)
{
for(int i= 0; i < list.size();i++){
System.out.println(list.get(i));
}
}
答案 3 :(得分:0)
我不确定数据结构是否是需求的一部分,但如果您的外部ArrayList使用ArrayList作为泛型类型,那么它将更好地构建。
ArrayList<ArrayList<String>> create = new ArrayList<ArrayList<String>>();
ArrayList<String> inner = new ArrayList<String>();
ArrayList<String> inner1 = new ArrayList<String>();
...
create.add(inner);
create.add(inner1);
然后你可以像这样打印出来:
for(List list : create) {
for (String val : list) {
System.out.println(val);
}
}
其他,如果您坚持使用原始代码,当您添加到外部列表时,您正在使用ArrayList上的toString()方法。这将生成以括号括起的逗号分隔的值字符串(例如[val1,val2])。如果你想在没有括号等的情况下实际打印出单个值,你必须将字符串转换回数组(或列表),这样做:
for (String valList : create) {
String[] vals = valList.substring(1, val.length() - 1).split(",");
for (String val : vals) {
System.out.println(val.trim());
}
}