java8 常用code

文章目录

  • 前言
  • 一、lambda
    • [1. 排序](#1. 排序)
      • [1.1 按照对象属性排序:](#1.1 按照对象属性排序:)
      • [1.2 字符串List排序:](#1.2 字符串List排序:)
      • [1.3 数据库排序jpa](#1.3 数据库排序jpa)
    • [2. 聚合](#2. 聚合)
      • [2.1 基本聚合(返回对象list)](#2.1 基本聚合(返回对象list))
      • [2.2 多字段组合聚合(直接返回对象list数量)](#2.2 多字段组合聚合(直接返回对象list数量))
  • 二、基础语法
    • [2.1 List](#2.1 List)
      • [2.1.1 数组初始化赋值](#2.1.1 数组初始化赋值)
      • [2.1.2. 逗号分割字符串、list互转](#2.1.2. 逗号分割字符串、list互转)
      • [2.1.3 去重](#2.1.3 去重)
    • [2.2. Json解析](#2.2. Json解析)
      • [2.2.1 Gson](#2.2.1 Gson)
      • [2.2.2 Fastjson](#2.2.2 Fastjson)
    • [2.3. LocalDateTime](#2.3. LocalDateTime)
      • [2.3.1 String->LocalDateTime](#2.3.1 String->LocalDateTime)
      • [2.3.2 Date->LocalDateTime](#2.3.2 Date->LocalDateTime)
    • [2.4. Optional](#2.4. Optional)
      • [2.4.1 map/flatMap](#2.4.1 map/flatMap)
      • [2.4.2 ifPresent](#2.4.2 ifPresent)
      • [2.4.3 filter](#2.4.3 filter)
    • [2.5. EsayExcel](#2.5. EsayExcel)
      • [2.5.1 导出示例](#2.5.1 导出示例)
      • [2.5.2 相关注解](#2.5.2 相关注解)
  • [三、 Linux命令](#三、 Linux命令)
    • [3.1 磁盘爆满占用情况](#3.1 磁盘爆满占用情况)
    • [3.2 nacos单机启动命令](#3.2 nacos单机启动命令)
    • [3.3 防火墙状态查询及操作](#3.3 防火墙状态查询及操作)
    • [3.4 清理缓存(buff/cache)](#3.4 清理缓存(buff/cache))

前言

常用语法汇总

一、lambda

1. 排序

1.1 按照对象属性排序:

java 复制代码
List<AccidentEduSLResp> respList =list.stream().sorted(Comparator.comparing(AccidentEduSLResp::getOrgUnit)).collect(Collectors.toList());
district.sort(Comparator.comparing(AccidentEduSLResp::getOrgUnit));  //性能优

1.2 字符串List排序:

java 复制代码
List<String> sortedDistrict = district.stream().sorted().collect(Collectors.toList());

1.3 数据库排序jpa

java 复制代码
dao.findAll(spec, Sort.by(Sort.Order.desc(ExpertConstants.UPDATE_TIME), Sort.Order.asc(ExpertConstants.EXAMINE_STATUS)));

2. 聚合

2.1 基本聚合(返回对象list)

java 复制代码
Map<String, List<AccidentSupervisePO>> collect = cityList.stream().collect(Collectors.groupingBy(s -> s.getDistrictCode()));

2.2 多字段组合聚合(直接返回对象list数量)

java 复制代码
Map<String, Long> collect = list.stream().collect(Collectors.groupingBy(o -> o.getDistrictCode() + "_" + o.getOrgUnit(), Collectors.counting()));

二、基础语法

2.1 List

2.1.1 数组初始化赋值

Arrays.asList 不允许add remove操作 UnsupportedOperationException

java 复制代码
public static final List CITY_ARR = Arrays.asList("230100","230200","230300","230400","230500","230600");

需要add等操作需要以下写法支持

java 复制代码
List<String> list = new ArrayList<>(Arrays.asList(arr));

2.1.2. 逗号分割字符串、list互转

List 转字符串:

java 复制代码
Joiner.on(",").join(list)

字符串转List:

java 复制代码
//-> 引入guava-28.2-jre.jar//-> CommonConstants常量类定义
public static final Splitter SPLITTER_COMMA = Splitter.on(",").omitEmptyStrings().trimResults();
//需要判断字符串是否为空
List<String> list = CommonConstants.SPLITTER_COMMA.splitToList(a.getDistrictCode());

2.1.3 去重

用hashset去重list 性能优

java 复制代码
List<String> testListDistinctResult = new ArrayList<>(new HashSet(testList));

2.2. Json解析

2.2.1 Gson

java 复制代码
Book b = new Book("书名1","简介1");
//使用gson将对象转为json字符串
String json = new Gson().toJson(b);
System.out.println(json);

//使用gson将json字符转转为对象(第一个参数为json字符串,第二个参数为要转为的类)
Book b2 = new Gson().fromJson("{\\"name\\":\\"书名1\\",\\"info\\":\\"简介1\\"}",Book.class);

2.2.2 Fastjson

java 复制代码
Book b = new Book("书名2","简介2");
//使用fastjson将对象转为json字符串
String json= JSON.toJSONString(b);
System.out.println(json);

//使用fastjson将json字符转转为对象(第一个参数为json字符串,第二个参数为要转为的类)
Book b2 = JSON.parseObject("{\\"name\\":\\"书名1\\",\\"info\\":\\"简介1\\"}", Book.class);

2.3. LocalDateTime

2.3.1 String->LocalDateTime

java 复制代码
//1.具有转换功能的对象
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//2.要转换的对象	
LocalDateTime time = LocalDateTime.now();

//3.发动功能
String localTime = df.format(time);
System.out.println("LocalDateTime转成String类型的时间:"+localTime);

//3.LocalDate发动,将字符串转换成  df格式的LocalDateTime对象,的功能
LocalDateTime LocalTime = LocalDateTime.parse(strLocalTime,df)
System.out.println("String类型的时间转成LocalDateTime:"+LocalTime);

2.3.2 Date->LocalDateTime

java 复制代码
//Date转LocalDateTime 
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
System.out.println("Date = " + date);
System.out.println("LocalDateTime = " + localDateTime);

//LocalDateTime转Date 
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
System.out.println("LocalDateTime = " + localDateTime);
System.out.println("Date = " + date);

2.4. Optional

2.4.1 map/flatMap

● map适用于基础数据类型

● flatMap适用于对象类型

user不为空的时候取address address为空取city city为空异常

java 复制代码
Optional.ofNullable(user)
                   .map(u-> u.getAddress())
                   .map(a->a.getCity())
                   .orElseThrow(()->new Exception("错误"));

2.4.2 ifPresent

user不为空时dosomething

java 复制代码
Optional.ofNullable(user)
.ifPresent(u->{
    dosomething(u);
});

2.4.3 filter

如果user的name的是zhangsan的,则返回当前对象。否则返回构造的user对象。

java 复制代码
Optional.ofNullable(user)
.filter(u->"zhangsan".equals(u.getName()))
.orElseGet(()-> {
    User user1 = new User();
    user1.setName("zhangsan");
    return user1;
});

2.5. EsayExcel

2.5.1 导出示例

java 复制代码
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyExcel没有关系
String fileName = URLEncoder.encode("专家报销汇总" + DateUtil.localDateToString(LocalDate.now()), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
// 前端需要FileName头否则会会有问题
response.setHeader("FileName", fileName + ".xlsx");
response.setHeader("Access-Control-Expose-Headers", "FileName");
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
EasyExcel//将数据映射到DownloadDTO实体类并响应到浏览器
.write(response.getOutputStream(), ExpertAndCostInfoOutDTO.class)
//07的excel版本,节省内存
.excelType(ExcelTypeEnum.XLSX)
//是否自动关闭输入流
.autoCloseStream(Boolean.TRUE)
.registerWriteHandler(horizontalCellStyleStrategy)
.sheet("专家报销汇总").doWrite(findExpertAndCostGatherList(dto).getExpertList());

2.5.2 相关注解

java 复制代码
//不映射excel
@ExcelIgnore    

//列宽 class上控制全部字段  属性上控制该属性字段
@ColumnWidth(40)  

//2.1.4 表头名称及排序   
//@ExcelProperty(order = 2)  2.2.7 排序写法 index被兼容
@ExcelProperty(value = "任务内容", index = 1)

三、 Linux命令

3.1 磁盘爆满占用情况

bash 复制代码
df -h
du -h --max-depth=1

3.2 nacos单机启动命令

bash 复制代码
sh startup.sh -m standalone

3.3 防火墙状态查询及操作

bash 复制代码
systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld

3.4 清理缓存(buff/cache)

清除前后使用 free -h 查看效果

bash 复制代码
free -h
sysctl -w vm.drop_caches=3
free -h
相关推荐
_oP_i38 分钟前
Pinpoint 是一个开源的分布式追踪系统
java·分布式·开源
mmsx41 分钟前
android sqlite 数据库简单封装示例(java)
android·java·数据库
bryant_meng44 分钟前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
武子康1 小时前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
java·大数据·数据仓库·hive·hadoop·架构
若亦_Royi1 小时前
C++ 的大括号的用法合集
开发语言·c++
资源补给站2 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
豪宇刘2 小时前
MyBatis的面试题以及详细解答二
java·servlet·tomcat
秋恬意2 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别
java·数据库·mybatis
m0_748247552 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
6.943 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala