JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Java集合初始化多种写法

wys521 2024-12-27 16:48:42 精选教程 16 ℃ 0 评论

先来看一段代码

List<String> userList = new ArrayList<>();
userList.add("zhangsan");
userList.add("lisi");
userList.add("wangwu");

这是集合初始化常用写法,虽然没什么毛病,但总觉得不够优雅,我们可以来调整一下

List<String> userList = new ArrayList<String>() {
    {
        add("zhangsan");
        add("lisi");
        add("wangwu");
    }
};

利用了匿名内部类,虽然看似变化不大,但更有整体性,也更简洁些,歪哥还是很喜欢这种写法的。

类似的,Map结构也可以使用这种写法

Map<String, String> userMap = new HashMap<>() {{
    put("user1", "zhangsan");
    put("user2", "lisi");
}};

除此之外,联想到我们经常使用的不可变列表Arrays.asList(...),也可以由此改造一下

List<String> userList = new ArrayList<>(Arrays.asList("zhangsan", "lisi", "wangwu"));

我们包装了一下,让其成为正常的可变列表。这种写法代码量更少了,但加了嵌套,其实看起来是“臃肿”的。类似的还有Java9引入的List.of(...),以及Collections.unmodifiableList(...)等等。

还有一种stream方式,如下

List<String> userList = Stream.of("zhangsan", "lisi", "wangwu").collect(Collectors.toList());

怎么说呢,感觉有点刻意“炫技”了,当然喜欢这种写法的可以尝试。

最后就是使用第三方库了,比如guava

List<String> userList = Lists.newArrayList("zhangsan", "lisi", "wangwu");

其实没太大区别。

整体看下来,列表初始化毕竟是一个“简单的小事”,再折腾可能也都大差不差,歪哥还是最推荐匿名内部类的写法,从整体性、可读性、简洁优雅程度都有提升。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表