user3441151
user3441151

Reputation: 1910

JAVA Get each value of arraylist

I have one arraylist that contain two list like this

[[asd, asswwde, efef rgg], [asd2223, asswwd2323e, efef343 rgg]]

My Code is

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());

i have to get all value one by one of every index of that arraylist

So what is the best way to get these all value one by one. I am using JAVA with Eclipse Mars.

Upvotes: 0

Views: 874

Answers (4)

Abdelhak
Abdelhak

Reputation: 8387

Try to use for loop nested in foreach loop like this:

 for(List list : arrayListOfList)
  {
   for(int i= 0; i < list.size();i++){
      System.out.println(list.get(i));
    }
  }

Upvotes: 1

James
James

Reputation: 1501

You want to loop through the outside ArrayList and then loop through each ArrayList within this ArrayList, you can do this by using the following:

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);
    }
}

Here is another verison you may find easier to understand, but is essentially the same:

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);
    }
}

or alternatively again using a foreach loop:

for (ArrayList<String> innerArrayList : outerArrayList)
{
    for (String element : innerArrayList)
    {
        String theElement = element;
    }
}

It might be worth noting that your ArrayList appears to contain different types of elements - is this definitely what you wanted to do? Also, make sure you surround your strings with "" unless they are variable names - which it doesn't appear so.

EDIT: Updated elements to type String as per your update.

I would also recommend you change the type of your create ArrayList, like below, as you know it will be storing multiple elements of type ArrayList:

ArrayList<ArrayList> create = new ArrayList<ArrayList>();

Upvotes: 1

TheEllis
TheEllis

Reputation: 1736

I'm not sure if the data structures are part of the requirements, but it would be better constructed if your outer ArrayList used ArrayList as the generic type.

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);

Then you could print them out like this:

for(List list : create) {
    for (String val : list) {
       System.out.println(val);
    }
}

Othewise, if you stick with your original code, when you add to the outer list you are using the toString() method on an ArrayList. This will produce a comma delimited string of values surrounded by brackets (ex. [val1, val2]). If you want to actually print out the individual values without the brackets, etc, you will have to convert the string back to an array (or list) doing something like this:

for (String valList : create) {
    String[] vals = valList.substring(1, val.length() - 1).split(",");
    for (String val : vals) {
        System.out.println(val.trim());
    }
}

Upvotes: 0

assylias
assylias

Reputation: 328608

Just use two nested loops:

List<List<Object>> list = ...;
for (List<Object> subList : list) {
  for (Object o : subList) {
    //work with o here
  }
}

You may also want to consider replacing the inner lists by proper objects.

Upvotes: 3

Related Questions