Question: Why can't I create an array of List ?

```
List<String>[] nav = new List<String>[] { new ArrayList<String>() };

```

Eclipse says "Cannot create a generic array of List"

or

```
ArrayList<String>[] nav = new ArrayList<String>[] { new ArrayList<String>() };

```

Eclipse says "Cannot create a generic array of ArrayList"

or

```
List<String>[] getListsOfStrings() {
    List<String> groupA = new ArrayList<String>();
    List<String> groupB = new ArrayList<String>();
    return new List<String>[] { groupA, groupB };
}

```

But I can do this:

```
List[] getLists() {
    return new List[] { new ArrayList(), new ArrayList() };
}

```

Eclipse says that List and ArrayList are *raw types* but it compiles...

Seems pretty simple, why won't it work?

Answer: 
No exact answer, but a tip:

Last example has a raw type warning because you omitted the typization of the list; it is generally a better (type safe) approach to specify which object types are contained in the list, which you already did in the previous examples (`List<String>` instead of `List`).

Using arrays is not best practice, since their use contains errors most times; Using Collection classes (List, Set, Map,...) enables use of typization and of convenient methods for handling their content; just take a look at the static methods of the Collections class.

Thus, just use the example of the previous answer.
Another solution is to extend `LinkedList<String>` (or `ArrayList<String>`, etc.), then create an array of the subclass.

```
private static class StringList extends LinkedList<String> {}

public static void main(String[] args)
{
    StringList[] strings = new StringList[2];
    strings[0] = new StringList();
    strings[1] = new StringList();
    strings[0].add("Test 1");
    strings[0].add("Test 2");
    strings[1].add("Test 3");
    strings[1].add("Test 4");
    System.out.println(strings[0]);
    System.out.println(strings[1]);
}

```