JAVA获取arraylist的每个值

时间:2016-04-29 14:08:02

标签: java arrays arraylist

我有一个包含两个列表的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。

4 个答案:

答案 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());
    }
}