How do I initialize a two-dimensional List statically?

前端 未结 3 650
孤街浪徒
孤街浪徒 2021-02-05 09:39

How can I initialize a multidimensional List statically?

This works:

List> list = new ArrayList>();
<         


        
相关标签:
3条回答
  • 2021-02-05 10:04

    If you create a helper method, the code looks a bit nicer. For example

    public class Collections {
        public static <T> List<T> asList(T ... items) {
            List<T> list = new ArrayList<T>();
            for (T item : items) {
                list.add(item);
            }
    
            return list;
        }
    }
    

    and then you can do (with a static import)

    List<List<Integer>> list = asList(
                                 asList(1,2,3),
                                 asList(4,5,6),
                                 asList(7,8,9),
                               );
    

    Why I don't use Arrays.asList()

    Arrays.asList() returns a class of type java.util.Arrays.ArrayList (it's an inner class of Arrays). The problem I've found is that it's VERY easy to think that one is using a java.lang.ArrayList, but their interfaces are very, very different.

    0 讨论(0)
  • 2021-02-05 10:07

    You can do so by adding a static block in your code.

    private static List<List<Integer>> list = new ArrayList<List<Integer>>();
    static {
      List<Integer> innerList = new ArrayList<Integer>(3);
      innerList.add(1);
      innerList.add(2);
      innerList.add(3);
      list.add(innerList);
      //repeat
    }
    
    0 讨论(0)
  • 2021-02-05 10:08

    You can do it this way:

    import static java.util.Arrays.*;
    

    ...

    List<List<Integer>> list = asList(
        asList( 1, 2, 3 ),
        asList( 4, 5, 6 ),
        asList( 6, 7, 8 ) );
    
    0 讨论(0)
提交回复
热议问题