What is the shortest way to initialize List of strings in java?

后端 未结 7 903
无人共我
无人共我 2020-12-04 17:39

I am searching for the shortest way (in code) to initialize list of strings and array of strings, i.e. list/array containing \"s1\", \"s2\", \"s3\" string elements.

7条回答
  •  执笔经年
    2020-12-04 17:54

    There are various options. Personally I like using Guava:

    List strings = Lists.newArrayList("s1", "s2", "s3");
    

    (Guava's a library worth having anyway, of course :)

    Using just the JDK, you could use:

    List strings = Arrays.asList("s1", "s2", "s3");
    

    Note that this will return an ArrayList, but that's not the normal java.util.ArrayList - it's an internal one which is mutable but fixed-size.

    Personally I prefer the Guava version as it makes it clear what's going on (the list implementation which will be returned). It's also still clear what's going on if you statically import the method:

    // import static com.google.common.collect.Lists.newArrayList;
    List strings = newArrayList("s1", "s2", "s3");
    

    ... whereas if you statically import asList it looks a little odder.

    Another Guava option, if you don't want a modifiable-in-any-way list:

    ImmutableList strings = ImmutableList.of("s1", "s2", "s3");
    

    I typically want to either have a completely mutable list (in which case Lists.newArrayList is best) or a completely immutable list (in which case ImmutableList.of is best). It's rare that I really want a mutable-but-fixed-size list.

提交回复
热议问题