阅读说明:

1.如果有排版格式问题,请移步 《后端开发小技巧-java集合创建》,选择宽屏模式效果更佳。

2. 本文为原创文章,转发请注明出处。

后端开发中集合是经常会用到的类型。java原生的集合方法难以满足要求,commons-collections库和guava库扩充了集合的功能,帮助我们写出简洁优雅的代码。maven导入方式如下。

<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.3</version>
</dependency>
</dependencies>

本文将列举业务开发中List, Set, Map三大集合中常用的方法。

List

list初始化

原生方式

List<String> monthList = new ArrayList<>();
monthList.add("January");
monthList.add("February");
monthList.add("March");

匿名类方式

List<String> monthList = new ArrayList<String>() {
{
add("January");
add("February");
add("March");
}
};

数组转List方式

List<String> monthList = new ArrayList<>(Arrays.asList("January", "February", "March"));

java9方式

List<String> monthList = List.of("January", "February", "March");

guava方式

List<String> monthList = Lists.newArrayList("January", "February", "March");

java stream方式

 List<String> monthList = Stream.of("January", "February", "March").collect(Collectors.toList());

不可变List

Collections.unmodifiableList方式

 List<String> monthList1 = Collections.unmodifiableList(monthList);

guava方式

  List<String> monthList1 = ImmutableList.<String>builder()
.add("January")
.add("February")
.add("March")
.build();
List<String> monthList2 = ImmutableList.of("January", "February", "March");

其他

判空

 System.out.println(CollectionUtils.isEmpty(monthList));
System.out.println(CollectionUtils.isNotEmpty(monthList));

指定容量

List<String> monthList = Lists.newArrayListWithCapacity(100);  //比原生方式new ArrayList<>(100)简单易懂

兼容null对象

CollectionUtils.emptyIfNull(monthList).forEach(System.out::println);

Set

set初始化

原生方式

Set<String> monthSet = new HashSet<>();
monthSet.add("January");
monthSet.add("February");
monthSet.add("March");

匿名类方式

 Set<String> monthSet = new HashSet<String>() {
{
add("January");
add("February");
add("March");
}
};

数组转Set方式

Set<String> monthSet = new HashSet<>(Arrays.asList("January", "February", "March"));

java9方式

Set<String> monthSet = Set.of("January", "February", "March");

guava方式

Set<String> monthSet = Sets.newHashSet("January", "February", "March");

java stream方式

Set<String> monthSet = Stream.of("January", "February", "March").collect(Collectors.toSet());

不可变Set

Collections.unmodifiableSet方式

 Set<String> monthSet1 = Collections.unmodifiableSet(monthSet);

guava方式

 Set<String> monthSet2 = ImmutableSet.<String>builder()
.add("January")
.add("February")
.add("March")
.build();
Set<String> monthSet3 = ImmutableSet.of("January", "February", "March");

其他

判空

 System.out.println(CollectionUtils.isEmpty(monthSet));
System.out.println(CollectionUtils.isNotEmpty(monthSet));

指定容量

Set<String> monthSet = Sets.newHashSetWithExpectedSize(100);  //比原生方式new HashSet<>(100)简单易懂

兼容null对象

CollectionUtils.emptyIfNull(monthSet).forEach(System.out::println);

Map

map初始化

原生方式

Map<String, Integer> monthMap = new HashMap<String, Integer>();
monthMap1.put("January", 1);
monthMap1.put("February", 2);
monthMap1.put("March", 3);

匿名类方式

  Map<String, Integer> monthMap = new HashMap<String, Integer>() {
{
put("January", 1);
put("February", 2);
put("March", 3);
}
};

java9新特性

Map<String, Integer> monthMap = Map.of("January", 1, "February", 2, "March", 3);

不可变map

Collections.unmodifiableMap

使用Collections.unmodifiableMap包装,转换为不可变map

Map<String, Integer> monthMap1 = Collections.unmodifiableMap(monthMap);

guava方式

支持两种写法:builder方式和of方式。

     Map<String, Integer> monthMap1 = ImmutableMap.<String, Integer>builder()
.put("January", 1)
.put("February", 2)
.put("March", 3)
.build();
Map<String, Integer> monthMap2 = ImmutableMap.of(
"January", 1,
"February", 2,
"March", 3);

其他

判空

 System.out.println(MapUtils.isEmpty(monthMap));
System.out.println(MapUtils.isNotEmpty(monthMap));

指定容量

Map<String, Integer> monthMap = Maps.newHashMapWithExpectedSize(100);

兼容null对象

MapUtils.emptyIfNull(monthMap).forEach((key, value) -> System.out.println(key));

v

java后端开发小技巧-集合初始化多种方法的更多相关文章

  1. Java开发小技巧(三):Maven多工程依赖项目

    前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...

  2. TP开发小技巧

    TP开发小技巧原文地址http://wp.chenyuanzhao.com/wp/2016/07/23/tp%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/ ...

  3. Java后端开发——美团(牛客)

    Java后端开发--美团(牛客) Java的基本数据类型,各自的字节数 ​ 老生常谈,不多说了. 类型 字节数 byte 1字节 short 2字节 int 4字节 long 8字节 float 4字 ...

  4. 2022美团Java后端开发春招实习面经

    2022美团Java后端开发春招实习面经 一面 1.讲一下计算机网络的五层架构,每层分别有什么协议 ​ 五层架构:应用层.运输层.网络层.数据链路层.物理层 ​ 2.什么是 Http 协议,各种 Ht ...

  5. BizTalk开发小技巧

    BizTalk开发小技巧 随笔分类 - Biztalk Biztalk 使用BizTalk实现RosettaNet B2B So Easy 摘要: 使用BizTalk实现RosettaNet B2B ...

  6. Java后端开发奋斗之路

    本人方向:Java后端开发方向,本文中内容持续更新中 Java技术栈:https://www.cnblogs.com/wyb666/p/10222070.html 推荐书籍:<程序员代码面试指南 ...

  7. Java后端开发常用工具

    Java后端开发常用工具推荐: 俗话说,工欲善其事,必先利其器.不过初学时候不大建议过度依赖IDE等过多工具,这会让自己的编程基础功变得很差,比如各种语法的不熟悉,各种关键字比如synchronize ...

  8. OMG,12 个精致的 Java 字符串操作小技巧,学它

    字符串可以说是 Java 中最具有代表性的类了,似乎没有之一哈,这就好像直播界的李佳琪,脱口秀中的李诞,一等一的大哥地位.不得不承认,最近吐槽大会刷多了,脑子里全是那些段子,写文章都有点不由自主,真的 ...

  9. Java 后端开发常用的 10 种第三方服务

    请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员.本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题. 严格意义上 ...

  10. 规范——Java后端开发规范

    Java后端开发规范 一.技术栈规约 二.命名规范 三.Java代码规范(注释规范.异常与日志.代码逻辑规范) 四.Mybatis与SQL规范 五.结果检查(单元测试及代码扫描) 六.安全规范 一.技 ...

随机推荐

  1. Linux 安装 MySQL 8.0

    目录 下载 安装数据库 修改mysql配置文件(若没有则新建) 安装并初始化mysql 查看mysql密码 配置启动 登录MySQL 修改密码 配置远程连接 配置防火墙 常见错误 Windows 安装 ...

  2. GBJ 97-1987 水泥混凝土路面施工及验收规范(电子版)PDF 版本 下载

    本规范适用于新建和改建的公路 城市道路 厂矿道路和民航机场道面等就地浇筑的水泥混凝土路面的施工及验收 链接:https://pan.baidu.com/s/17t88jnEU6IrptmEWsyuN3 ...

  3. CentOS——磁盘分区

    Centos7-磁盘分区磁盘层次结构–磁盘分区方法情况一:磁盘分区–磁盘小于2T fdisk情况二:磁盘分区–磁盘大于2T centos6:parted centos7:fdisk一.磁盘小于2T情况 ...

  4. 关于oracle pfile和spfile文件说明

    •Pfile(Parameter File,参数文件):是基于文本格式的参数文件,含有数据库的配置参数. 默认的名称为"init+例程名.ora",这是一个文本文件,可以用任何文本 ...

  5. PKI(Public Key Infrastructure,公钥基础设施)常见标准介绍

    ASN.1 - 数据结构描述语言 文件编码格式 DER编码格式 PEM编码格式 证书.密码学Key格式标准 X.509标准 PKCS(公钥加密标准)系列(PKCS#1.PKCS#8.PKCS#12) ...

  6. VSCode 中 Json 文件介绍

    Visual Studio Code 官方文档 1. Json 配置文件 Editing JSON with Visual Studio Code settings.json 分类 defaultse ...

  7. 微信 dat 文件还 荐

    前言 以微信 PC 端为例 某个小姐姐/小哥哥通过微信发给你的图片会在以下目录以 .dat 后缀的格式出现 C:\Users\taadis\Documents\WeChat Files\taadis\ ...

  8. Model Context Protocol

    MCP is an open protocol that enables AI models to securely interact with local and remote resources ...

  9. 解决VSCODE进行C代码编辑时结构体成员不可见或不提示的问题

    在使用VSCODE进行C代码编辑时,结构体成员有时可见,光标放到成员上时,系统会提示结构体成员对应的注释信息,但是有时候却不行. 经过测试,发现有如下规律:以test.c test.h include ...

  10. SSL证书免费申请(阿里云)

    简介 本文介绍SSL证书免费申请流程 注意: 免费单域名证书,可用于测试.个人试用等场景,org.jp等特殊域名存在无法申请的情况,正式环境建议使用付费证书. 每个实名主体个人/企业,一个自然年内可以 ...