java.util.function 定义了大量的函数接口
常用接口
消费型接口Tvoid对类型T对象应用 *** 作,包含方法
void accept(T t)
供给型接口无T返回类型为T的对象,包含方法
T get()
函数型接口TR对类型为T的对象应用 *** 作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)
断定型接口Tboolean确定类型为T的对象是否满足某约束,并返回boolean值。包含方法;boolean test(T t)
java.util.stream
简单上手limit 截取
skip 跳过
distinct 去重复
int[] ints = {1, 2, 3, 3, 3, 3, 6, 8, 9, 0, 4}; //创建一个有、int流 IntStream stream = Arrays.stream(ints); //静态方法创建流 StreammapintegerStream = Stream.of(1, 2, 3, 4, 4); //filter 过滤 数组中大于5的 stream.filter( i -> i>5) .limit(3) //结果截取前 3个 .skip(2)//结果天国前 2个 .distinct()// 去除重复结果 .forEach( System.out :: println); //无限流 Stream.iterate(0,t -> t+2) .limit(10) .forEach( System.out::println );
map 获取一个参数, 参数转换为其他形式互获取元素信息
flatmap 把流中的值 转换成另一个流 再把所有流合并
ArrayList排序arr = new ArrayList (); arr.add("aa");arr.add("bb");arr.add("cc"); Stream arrStream = arr.stream(); arrStream.map( str -> str.toUpperCase())//输出大写 .forEach(System.out :: println);
Streamstream = Arrays.asList(11, 21, 41, 31, 22, 12).stream(); stream.sorted().forEach( System.out::print );//11 12 21 22 31 41
Stream终止 *** 作stream = Arrays.asList(11, 21, 41, 31, 22, 12).stream(); stream.sorted( (o1,o2) -> o1.compareTo(o2) ).forEach( System.out :: println );
数据
ArrayListallMath() 返回值:booleanarr = new ArrayList<>(); arr.add(new user("张三",20)); arr.add(new user("奥斯丁",21)); arr.add(new user("温顿",22));
//判断是否是所有员元素满足条件 boolean返回值 boolean b = stream.allMatch(user -> user.getAge() > 21);anyMath() 返回值:boolean
//有一个匹配即可 boolean b1 = stream.anyMatch(user -> user.getAge() > 21);noneMatch 返回值:boolean
//是否没有 包含 张三 boolean s = stream.noneMatch(user -> user.getName().equals("张三"));findAn 获取任意元素
//获取任意元素 可以有中间 *** 作 stream.sorted().findAny();findFirst 获取第一个元素
//获取第一个元素 可以有中间 *** 作 tream.sorted().findFirst();conut 流中元素个数
//count 元素个数 ong count = stream.distinct().count();max 返回流中最大值
//map 映射出年纪, 在取最大值 stream.map( user::getAge ).max( Integer::compareTo );min 最小值
stream.map(user::getAge).min(Integer::compareTo);forEach 内部迭代
stream.forEach(System.out:: println);收集 collect (终止 *** 作)
//单那个元素的结果收集 stream().collect(Collectors.toSet()); stream().collect(Collectors.toList());归约
//归约 求和 Arrays.asList(1,2,3,4,5,6,7).stream().reduce(0,Integer::sum);Optional
java.util.Optional
创建 Optional 对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R9Po4cmU-1643430913719)(/Users/luofeng/Library/Application Support/typora-user-images/image-20220129122816735.png)]
of -> 创建一个 必须非空的
empty. -> 创建一个空的
ofNullable -> 可以为空的
非空判断
boolena isPresent(). ->判断是否包含对象void ifPresent(Consumer super T>consumer) ->如果有值,就执行conusmer
获取 Optional 容器内对象
T get() ->返回对象内 值,(user、map、list…)T orElseGet(Supplier extends T>other ) ->如果有值则将其返回,否则由supplier接口实现题共对象T orElse throw(Supplier extends X>exceptionSupplier) ->如果有值则返回,否则返回由 supplier 接口提供的异常 以前
多层if 取非空判断
//非空判断 public String notNull(user u){ if( u != null ){ if( u.getName() != null) return u.getName(); } return "0"; }optional
public static String optional(user u) { //创建对象 内容可以为nukl Optionalu1 = Optional.ofNullable(u); //u1 为空的时候,创建 对象 加入u2 user u2 = u1.orElse(new user("无效对象", 0)); return u2.getName(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)