十种高级的代码书写方式,提高代码质量和工作效率

news2025/1/21 7:11:50

1.集合遍历

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
for (String name : list) {
    System.out.println(name);
}

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
list.forEach(name -> System.out.println(name));

2.排序

升序

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3.过滤

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<String> filteredList = new ArrayList<String>();
for (String name : list) {
    if (name.startsWith("a")) {
        filteredList.add(name);
    }
}

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<String> filteredList = list.stream().filter(name -> name.startsWith("a")).collect(Collectors.toList());

4.映射

映射即按照当前list顺序,根据新的规则新建一个list然后存储对应的对象

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<Integer> lengths = new ArrayList<Integer>();
for (String name : list) {
    lengths.add(name.length());
}

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<Integer> lengths = list.stream().map(name -> name.length())
.collect(Collectors.toList());

5.规约(求和)

不使用lambda:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = 0;
for (int i : list) {
    sum += i;
}

使用lambda:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, (a, b) -> a + b);

注意: reduce(T identity, BinaryOperator<T> accumulator方法第一个参数传入的是这个求和方法的起始值,如reduce(0, (a, b) -> a + b)输出15,reduce(3, (a, b) -> a + b)输出18

6.分组

把字符串长度相同的放在同一个链表里

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
Map<Integer, List<String>> grouped = new HashMap<Integer, List<String>>();
for (String name : list) {
    int length = fruit.length();
    if (!grouped.containsKey(length)) {
        grouped.put(length, new ArrayList<String>());
    }
    grouped.get(length).add(name);
}

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
Map<Integer, List<String>> grouped = list.stream().collect(Collectors.groupingBy(name -> name.length()));

7.实现函数式接口

不使用lambda:

public interface MyInterface {
    public void doSomething(String input);
}

MyInterface myObject = new MyInterface() {
    public void doSomething(String input) {
        System.out.println(input);
    }
};
myObject.doSomething("Hello World");

使用lambda:

MyInterface myObject = input -> System.out.println(input);
myObject.doSomething("Hello World");

8.进行Optional操作

Optional类是用来解决空指针异常的。

  • Optional.ofNullable(T t):t可以为null
  • Optional.map(Function<? super T,? extends U> mapper):如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。

不使用lambda:

String str = "Hello World";
if (str != null) {
    System.out.println(str.toUpperCase());
}

使用lambda:

Optional<String> str = Optional.ofNullable("Hello World");
str.map(String::toUpperCase).ifPresent(System.out::println);

9.流水线操作

不使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<String> filteredList = new ArrayList<String>();
for (String name : list) {
    if (name.startsWith("a")) {
        filteredList.add(name.toUpperCase());
    }
}
Collections.sort(filteredList);

使用lambda:

List<String> list = Arrays.asList("kk", "oneone", "11");
List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());

10.线程创建

不使用lambda:

Thread thread = new Thread(new Runnable() {
    public void run() {
        System.out.println("Thread is running.");
    }
});
thread.start();

使用lambda:

Thread thread = new Thread(() -> System.out.println("Thread is running."));
thread.start();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/950947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用工具将批量查询的物流信息导出到表格

现如今&#xff0c;物流行业发展迅速&#xff0c;人们对于物流信息的查询需求也越来越高。为了满足用户的需求&#xff0c;我们推荐一款便捷高效的物流信息查询工具——"固乔快递查询助手"软件。 首先&#xff0c;用户需要下载并安装"固乔快递查询助手"软件…

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

《论文阅读21》Group Equivariant Convolutional Networks

一、论文 研究领域&#xff1a;机器学习论文&#xff1a;Group Equivariant Convolutional Networks PMLR Proceedings of Machine Learning Research 2016 论文链接 二、论文简述 三、论文详述 群等变卷积网络 Abstract 我们引入群等变卷积神经网络&#xff08;G-CNN&…

景联文科技数据标注:人体关键点标注用途及各点的位置定义

人体关键点标注是一种计算机视觉任务&#xff0c;指通过人工的方式&#xff0c;在指定位置标注上关键点&#xff0c;例如人脸特征点、人体骨骼连接点等&#xff0c;常用来训练面部识别模型以及统计模型。这些关键点可以表示图像的各个方面&#xff0c;例如角、边或特定特征。在…

《异常检测——从经典算法到深度学习》22 Kontrast: 通过自监督对比学习识别软件变更中的错误

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

【UE】Texture Coordinate 材质节点

目录 一、简介 二、属性介绍 &#xff08;1&#xff09;参数&#xff1a;U平铺 &#xff08;2&#xff09;参数&#xff1a;V平铺 &#xff08;3&#xff09;参数&#xff1a;解除镜像U &#xff08;4&#xff09;参数&#xff1a;解除镜像V 三、 节点构成原理 四、初级…

java企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

docker 本地镜像发布到私有库

1、下载镜像 Docker Registry docker pull registry 2、运行私有库Registry&#xff0c;相当于本地有个私有Docker hub 默认情况&#xff0c;仓库被创建在容器的/var/lib/registry目录下&#xff0c;建议自行用容器卷映射&#xff0c;方便于宿主机联调 docker run \ -d \ -p…

Linux 通过 Docker 部署 Nacos 2.2.3 服务发现与配置中心

目录 环境准备Nacos 数据库创建Docker 部署 Nacos1. 创建挂载目录2. 下载镜像3. 创建和启动容器4. 访问控制台 导入 Nacos 配置SpringBoot 整合 Nacospom 依赖application.yml 配置 参考官方链接微服务商城源码 环境准备 名称版本IP端口Nacos2.2.3192.168.10.218848、9848MySQ…

餐厅固定资产怎么管理?

餐厅固定资产的管理需要做到以下几点&#xff1a;  固定资产购置&#xff1a;餐厅的固定资产包括设备、家具、厨房用品等&#xff0c;购置时需要注意质量和价格&#xff0c;并进行登记。  固定资产登记&#xff1a;将餐厅的固定资产名称、型号、规格、数量、单价、金额、购…

postgresql-子查询

postgresql-子查询 简介派生表IN 操作符ALL 操作符ANY 操作符关联子查询横向子查询EXISTS 操作符 简介 子查询&#xff08;Subquery&#xff09;是指嵌套在其他 SELECT、INSERT、UPDATE 以及 DELETE 语句中的 查询语句。 子查询的作用与多表连接查询有点类似&#xff0c;也是为…

成年T1D患者肠道微生物与宿主血糖

Biomamba荐语 今天分享的是一篇发表在《Diabetes Care》(IF17.1)上题为"The Gut Microbiome of Adults With Type 1 Diabetes and Its Association With the Host Glycemic Control."的文章&#xff0c;主要的实现方式为扩增子测序&#xff0c;所以不意外&#xff0…

深入浅出RPC框架 | 青训营

Powered by:NEFU AB-IN 文章目录 深入浅出RPC框架 | 青训营 RPC 框架分层设计远程函数调用&#xff08;RPC&#xff09;介绍名词解释一次RPC过程RPC好处和弊端分层设计编解码层协议层网络通信层 RPC 关键指标分析与企业实践稳定性保障策略请求成功率长尾请求注册中间件&#xf…

期权交易权限开通:需满足哪些要求,开通流程是怎样的?

现在期权开通方式多种多样&#xff0c;一种是50万元券商开通的正规渠道&#xff0c;一种是民间第三方期权分仓平台0门槛开通的方式&#xff0c;期权的买方风险有限收益无限&#xff0c;卖方风险无限收益有限&#xff0c;下文介绍期权交易权限开通&#xff1a;需满足哪些要求&am…

Android中级——消息机制

消息机制 概念ThreadLocalMessageQueueLooperHandlerrunOnUiThread() 概念 MessageQueue&#xff1a;采用单链表的方法存储消息列表Looper&#xff1a;查询MessageQueue是否有新消息&#xff0c;有则处理&#xff0c;无则等待ThreadLocal&#xff1a;用于Handler获取当前线程的…

基于鹰栖息算法优化的BP神经网络(预测应用) - 附代码

基于鹰栖息算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于鹰栖息算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.鹰栖息优化BP神经网络2.1 BP神经网络参数设置2.2 鹰栖息算法应用 4.测试结果&#xff1a;5.Matlab代…

cs231n_1_IntroToConv

参考的视频来自如下链接https://www.bilibili.com/video/BV1Ed4y1b7bm/ 参考笔记如下https://blog.csdn.net/TeFuirnever/article/details/89059673 x.1 CV历史 生物快速发展于5.4亿年前&#xff0c;那时的化石显示生物进化出了视觉&#xff0c;视觉使得生物多样性大爆炸。 …

探索回文链表:识别中轴,判断对称性

如何识别回文链表呢&#xff1f;大家可以先思考一下&#xff0c;看看能不能做出力扣234. 回文链表这道题目。 识别以head为头结点的链表是否为回文链表分为三个步骤&#xff0c;分别是&#xff1a; 找出链表的中间结点mid。如果链表有偶数个结点&#xff0c;则找出偏右边的结点…