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

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

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();
目录
打赏
0
0
0
0
8
分享
相关文章
汇总10种JavaScript代码的高端写法
刚开始学习JS代码时,我们只需要掌握JS中对应知识点就好,随着对JS代码的熟悉程度,我们就要思考如何写出更优雅,更简洁的代码。
276 3
electron ui框架
Electron是一个使用JavaScript, HTML和CSS等前端技术构建跨平台桌面应用程序的框架。
459 0
Rancher 使用介绍(可以通过界面管理 K8s 平台)
Rancher 是为使用容器的公司打造的容器管理平台,通过 Rancher,企业不再需要使用一系列开源软件从零开始构建一个容器服务平台。同时 Rancher 还提供了一个全栈容器部署和管理平台,用于管理 Docker 和 Kubernetes。
3098 0
Rancher 使用介绍(可以通过界面管理 K8s 平台)
查询快递物流信息
摘要:使用阿里云市场第三方接口,可以根据快递单号查询快递物流信息。需获取接口开通地址并找到一个快递单号,接口返回数据包括快递公司、状态、详细轨迹等。示例中展示了查询结果,包括快递状态(已签收)、最新状态描述、物流轨迹详情等。
1555 4
生成完美口型同步的 AI 数字人视频
在当今数字媒体和人工智能技术的推动下,生成完美口型同步的AI数字人视频成为备受关注的研究领域。本研究旨在开发一种技术,能够实现生成完美口型同步的AI数字人视频,使虚拟人物的口型与语音内容完美匹配。采用了深度学习方法,结合了语音识别、面部运动生成和视频合成技术,以实现这一目标。通过语音识别模型将输入的文本转换为音频波形,利用面部运动生成模型根据音频波形生成对应的面部动作序列,这些动作序列可以准确地反映出发音的口型和面部表情,最后生成口型同步的AI数字人视频。这项技术具有广泛的应用前景,可用于虚拟主持人、教育视频、学习平台等领域,提升视频内容的真实感和沟通效果。
857 0
html动态爱心代码【一】(附源码)
html动态爱心代码【一】(附源码)
12646 0
详解微软Copilot AI助手:Copilot官网入口_Copilot国内网站入口
微软 Copilot 是一种集成在多种 Microsoft 产品中的人工智能助手,旨在提高工作效率和创造力。它利用强大的机器学习和自然语言处理技术,能够理解用户的需求并提供实时的帮助和建议。以下是对微软 Copilot 的详细介绍。
vue : 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。...
vue : 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。...
578 1
element table表格表头动态渲染效果demo(整理)
element table表格表头动态渲染效果demo(整理)
JS截取base64图片格式上传,最佳的方式是split而不是replace
JS截取base64图片格式上传,最佳的方式是split而不是replace
302 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等