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
相关推荐
Swift社区3 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht3 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht3 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20243 小时前
Swift 数组
开发语言
吾日三省吾码4 小时前
JVM 性能调优
java
stm 学习ing4 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc5 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐5 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi776 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器