jdk8的新特性stream流-String等

本文介绍了Java 8的新特性,重点讲解了Lambda表达式的三种形式:带参数无返回值、无参数有返回值、带参数有返回值,以及Stream流的使用,包括流的分组、排序、过滤、转换等操作。通过示例展示了如何使用Collectors.groupingBy进行数据分组,并探讨了Stream流如何提升代码简洁性和执行效率。同时提到了Optional对象用于简化判空操作和方法引用的概念。

一.jdk8的新特性

二.String 各种数据类型的互相转换

三.常用API的类

四.常见异常-自定义异常

五.在线网站实用--java工具类

一.内部类

 

 

 二.lambda表达式

1.带参数无返回值

2.无参数有返回值

3.带参数有返回值

 三.stream流(大大提升了代码的书写简洁)

流的分组:

Collectors.groupingBy

接下来这个示例,将会按年龄对所有人进行分组:

Map<Integer, List<Person>> personsByAge = persons
    .stream()
    .collect(Collectors.groupingBy(p -> p.age)); // 以年龄为 key,进行分组

personsByAge
    .forEach((age, p) -> System.out.format("age %s: %s\n", age, p));

// age 18: [Max]
// age 23: [Peter, Pamela]
// age 12: [David]
 

流的排序和过滤:

Stream.of("d2", "a2", "b1", "b3", "c")
    .sorted((s1, s2) -> {
        System.out.printf("sort: %s; %s\n", s1, s2);
        return s1.compareTo(s2); // 排序
    })
    .filter(s -> {
        System.out.println("filter: " + s);
        return s.startsWith("a"); // 过滤出以 a 为前缀的元素
    })
    .map(s -> {
        System.out.println("map: " + s);
        return s.toUpperCase(); // 转大写
    })
    .forEach(s -> System.out.println("forEach: " + s)); // for 循环输出
 

将流中的对象转换为另一种类型

FlatMap 或者 map

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合_云深i不知处的博客-优快云博客

Stream流
在不是很了解stream流时,我们常用的是for循环去对集合进行操作。而现如今,随着stream流的普及,大家可以尝试着用stream流去代替for循环,好处有二,第一,stream流的执行效率要高于for循环,第二,用stream流比用for循环显得水平高点,代码更简洁好看一些。第三,stream流可以做筛选,不必通过SQL语句进行筛选。

 代码参考挺不错的

java代码优化之stream流+判空_呀呼嘿—yara的博客-优快云博客_stream判空

三.1.获取stream流 

 

 三.2  stream流的中间方法

 三.3 stream流的终结操作

 三.4    stream流不能直接修改数据源中的数据(记住........)

三.5  stream流的收集操作

 

 

四.链式编程

五.泛型(ArrayList就是一个泛型类可以参考源码)

 

 五.1 自定义泛型类(泛型给里边可以存任意数据类型,创建对象的时候可以确定类型)

 五.2 自定义泛型方法(方法在被调用的时候确定类型)

 五.3泛型接口

 五.4类型通配符

 

六,Optional对象判空

JDK1.8新特性 Optional判空详解,简化判空操作_Thinkingcao的博客-优快云博客_optional判空

七,方法的引用    (  :: )

十九、Java8新特性——方法引用【黑马JavaSE笔记】_-BoBooY-的博客-优快云博客

二.String 各种数据类型的互相转换

StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

1.String

 

 2.string的特点-面试题

 

 

 

 字符串的比较忽略大小写(场景:网站的验证码)

1.String常用方法

 

 ctrl+alt+m(抽取一个方法)

 

 

3种string 类型的区别

String、StringBuffer和StringBuilder的区别_陈新月-Phyllis的博客-优快云博客_stringbuilder

java 各种数据类型的互相转换


java 各种数据类型的互相转换_兔老大RabbitMQ的博客-优快云博客

三.常用API的类

 api:已经写好的,拿来就用的

一.math(数学有关的)

 二.syatem(跟系统相关的)

 三.object(顶级父类)

 四.objects(判断对象为空)

 五.BigDecimal(小数的精度计算,金融证券类)

 

六.基本类型的包装类(把某个基本类型变成一个对象)

 

 

 

七.Arrays

三.常用API的类

 

 封装好的时间日期:参考

史上最全Java8日期时间工具类_ThinkWon的博客-优快云博客

一.Date

 

 二.SimpleDateFormat

 

 

三.DateTimeFormatter(jdk8的时间日期类.用于日期的计算)

 四.LocalDateTime

 

 

 

 

 五.时间间隔对象的获取(Period获取2个时间间隔的年,月,日.....Duration获取2个时间间隔的时,分,秒)

 

 

四.常见异常-自定义异常

 项目中异常的处理:可以参考springmvc专门的处理异常的部分

1.什么时候抛出异常(当方法的参数有问题,或者中间调用方法的返回值有问题,要throw抛出异常,告诉调用者出现了异常)

2.什么时候处理异常(调用者的角度,当某段代码可能出现异常,try...catch..要捕获异常自己处理)

 

 一.异常概述

 二.异常的处理方式

二.1throws声明异常

二.2 throw抛出异常(方法入参的判断,抛出给调用者)

 

 try..catch...后边可以写多个异常.

 三.自定义异常(为了异常见名知意)

1.写的方法可以参考已经写好的空指针异常.

 

五.在线网站实用--java工具类

一。这里边包含好多有用的工具集合()

too.lu(在线工具)

在线工具 - 你的工具箱

二。工具类大全

Java工具类及配置文件模板大全_花伤情犹在的博客-优快云博客_java文件模板

对象的工具类

一、字符串工具类 org.apache.commons.lang.StringUtils (有多个)

二、org.springframework.beans.BeanUtils

六、org.apache.commons.lang.ArrayUtils

七、org.apache.commons.collections.CollectionUtils

十、org.apache.http.util.EntityUtils


JAVA常用工具类汇总_ourLang的博客-优快云博客

文件的工具类

三、org.apache.commons.io.IOUtils

四、org.apache.commons.io.FileUtils

九,org.apache.commons.io.FilenameUtils

FileUploadUtil 文件上传工具

加密解密的工具类

八、org.apache.commons.codec.digest.DigestUtils

时间日期工具类

DateUtil 日期工具

其他工具类

RedisUtils

QRCodeUtil 二维码生成工具

LogUtils 打印日志工具

MailUtil 邮箱工具

UUIDUtils

Java工具类及配置文件模板大全_花伤情犹在的博客-优快云博客_java 工具 配置文件

===

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值