How to create an ArrayList from ArrayLists?

I am trying to create an ArrayList from ArrayLists. I want to create 25 ArrayLists and have those ArrayList that have different values. The goal is to create a sorted dictionary by word length.

My code looks like

for(int i = 0; i < 25; i++) list2D.add(list); for(int i = 0; i < stringList; i++) list2D.get(stringList.get(i).length()).add(stringList.get(i)) 

The problem is that each list contains the same values ​​after completion.

I know why the problem is happening. "list" is an ArrayList, ArrayList is an object, and if you are editing an object, then everything containing this object will be edited.

To fix the problem, I tried

  for(int i = 0; i < 25; i++){ list = new ArrayList<String>(); for(int i2 = 0; i2 < stringList.size(); i2++){ if(stringList.get(i).length() == i) list.add(stringList.get(i2)); } list2D.add(list); } 

But when I test my "list2D"

  for(int i = 0; i < 25; i++) System.out.print(list2D.get(i).size()+" "); 

I get

0 0 0 0 0 58 110 0 58 110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

and I have no idea why ...

It may also be appropriate to note that stringList contains 58110 values.

Also I do not want to create 25 different ArrayLists!

+7
java object arraylist
source share
3 answers

Thanks. I found a really easy solution though ...

 for(int i = 0; i < 25; i++) list2D.add(new ArrayList<String>()); for(int i = 0; i < word.size(); i++) list2D.get(stringList.get(i).length()).add(stringList.get(i)); 
+1
source share

I will try the following to do one pass of stringList

 List<List<String>> dict = new ArrayList<>(); for(string s: stringsList) { int len = s.length(); // add new array lists as required, could be any length, assuming << 100 while(dict.size() <= len) dict.add(new ArrayList<String>()); // add the string to the right list. dict.get(len).add(s); } 
+11
source share

It is easy. For example, you can create them as follows: http://ideone.com/3NZwWU

 // just for convenience, initializes arraylist with values static <T> ArrayList<T> AL(T... values) { ArrayList<T> r = new ArrayList<T>(); for (T x : values) { r.add(x); } return r; } public static void main (String[] args) throws java.lang.Exception { System.out.println(AL( AL(3,2,24,131), AL("this", "is", "second", "array"))); // prints `[[3, 2, 24, 131], [this, is, second, array]]` } 
+1
source share

All Articles