Java 1.8新特性使用记录

简介: Java 1.8新特性使用记录有些方法一段时间不使用会忘记,这里要记录一下,方便以后使用

一、过滤Filter
注意:符合条件的才返回。List的对象如果为null会报空指针,安全起见要加上判断

public class MyCar {
   
    private Integer id;
    private String name;
    private String number;
    private Integer age;
}

public static void myFilter() {
   
        List<MyCar> carList = new ArrayList<>();
        carList.add(new MyCar("c1",1));
        carList.add(new MyCar("c2",2));
        carList.add(new MyCar("c3",3));
        carList.add(new MyCar("c4",4));
        carList.add(new MyCar("c5",5));
        carList.add(null);
        //符合条件的才会返回
        carList = carList.stream().filter(e->e != null && e.getAge() >2).collect(Collectors.toList());

        carList.forEach(e->System.out.println(e));

    }

    public static void main(String[] args) {
   
        FilterDemo.myFilter();
    }

二、数据容器的转换
2.1、将对象数组一个属性抽出来变成List


//List的生成看上面
List<String> nameList = carList.stream().map(e->e.getName()).collect(Collectors.toList());
        nameList.forEach(e->System.out.println(e));

2.2、将对象List指定属性内容以逗号隔开,例如:name


//生产环境注意判断空
String nameStr = carList.stream().map(e->e.getName()).collect(Collectors.joining(","));
System.out.println(nameStr);
//c3,c4,c5

//上面也可以分成两步操作
nameList = carList.stream().map(e->e.getName()).collect(Collectors.toList());
nameStr = nameList.stream().collect(Collectors.joining(","));
System.out.println(nameStr);
//c3,c4,c5

三、List 排序

3.1.List排序,Integer,BigDecimal,Date可以一样使用
注意:判空是很重要的一步。null一般放在后面。下面都有介绍

public static void mySortedInteger() {
   
        //这里其中有一个为空的
        List<Integer> numList = Arrays.asList( 1,2,3,4,5,6,7,8,8,9,null,10);
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
        //默认升序,判空,null放在后面
        numList = numList.stream().sorted(Comparator.nullsLast(Integer::compareTo)).collect(Collectors.toList());
        //numList = numList.stream().sorted(Comparator.comparing(e->e,Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
        //默认升序,判空,null放在前面
        numList = numList.stream().sorted(Comparator.nullsFirst(Integer::compareTo)).collect(Collectors.toList());
        //numList = numList.stream().sorted(Comparator.comparing(e->e,Comparator.nullsFirst(Integer::compareTo))).collect(Collectors.toList());
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
        //降序,判空,null放在后面
        numList = numList.stream().sorted(Comparator.nullsLast(Comparator.reverseOrder())).collect(Collectors.toList());
        //numList = numList.stream().sorted(Comparator.comparing(e->e,Comparator.nullsLast(Comparator.reverseOrder()))).collect(Collectors.toList());
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
        //降序,判空,null放在前面
        numList = numList.stream().sorted(Comparator.nullsLast(Integer::compareTo).reversed()).collect(Collectors.toList());
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
        //当然可以加filter,但是这样长度就会减少
        //numList = numList.stream().filter(e->e != null).sorted(Comparator.comparing(e->e,Comparator.reverseOrder())).collect(Collectors.toList());
        numList = numList.stream().filter(e->e != null).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        System.out.println(numList.stream().map(e->e+"").collect(Collectors.joining(",")));
    }

3.2、对象数组
对象是使用率最高的,也需要注意判空!
后面有时间再补

相关文章
|
16小时前
|
Java API 开发者
Java 8的新特性简单分享(后续有系列篇~敬请期待)
Java 8的新特性简单分享(后续有系列篇~敬请期待)
4 1
|
1天前
|
SQL 运维 Java
深度解析Java 9核心新特性
深度解析Java 9核心新特性
|
2天前
|
安全 Java API
JDK 11 vs JDK 8:探索Java的新特性和改进
JDK 11 vs JDK 8:探索Java的新特性和改进
|
2天前
|
并行计算 JavaScript 前端开发
Java 8新特性全面解读
Java 8新特性全面解读
|
11天前
|
并行计算 Java API
【Java】Java18的新特性
【Java】Java18的新特性
14 3
|
14天前
|
安全 Java API
深入解析 Java 8 新特性:LocalDate 的强大功能与实用技巧
深入解析 Java 8 新特性:LocalDate 的强大功能与实用技巧
18 1
|
14天前
|
Java
Java 8 新特性:深入理解 Lambda 表达式的强大与应用
Java 8 新特性:深入理解 Lambda 表达式的强大与应用
14 2
|
28天前
|
Java 编译器 API
Java语言新特性:探索Java的最新进展
Java语言新特性:探索Java的最新进展
|
28天前
|
Java API
Java 8新特性之Lambda表达式和Stream API
【5月更文挑战第31天】本文将详细介绍Java 8中的两个重要特性:Lambda表达式和Stream API。通过对比传统编程方式,我们将探讨这两个特性如何简化代码、提高可读性和性能。文章还将通过实例演示如何使用Lambda表达式和Stream API进行集合操作、过滤和转换等任务。
|
28天前
|
安全 Java API
Java 8中的新特性及其对编程实践的影响
【5月更文挑战第31天】本文将探讨Java 8中的新特性,包括Lambda表达式、Stream API和Optional类,以及这些特性如何改变了Java编程的实践。我们将通过实例代码来展示这些新特性的使用,并讨论它们如何提高了Java程序的可读性和效率。