public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
接着:
package com.example.demo;
import com.example.demo.entity.hlvy;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
-
HlvyTest
-
@author heng
**/
public class HlvyTest {
public static void main(String[] args) {
/**
-
java8新特征 stream map
-
拿到集合里实体类的某个字段
*/
List list = new ArrayList();
hlvy h = new hlvy();
hlvy h1 = new hlvy();
h.setName(“yanyan”);
h.setAge(18);
h1.setName(“heng”);
h1.setAge(18);
list.add(h);
list.add(h1);
List name = list.stream().map(hlvy::getName).collect(Collectors.toList());
/*
for (String s : name) {
System.out.println(s);
}*/
/**
-
java8新特征 stream
-
%2==0就添加到集合 filter 让符合条件的通过,不符合的过滤掉
*/
List nums = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
List listTwo = nums.stream().filter(num -> num % 2 == 0).collect(Collectors.toList());
/* for (Integer integer : listTwo) {
System.out.println(integer);
}*/
/**
-
java8新特征 stream distinct 对数据进行去重
-
%2==0就添加到集合 并且不重复
*/
List numsOne = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
List listThree = numsOne.stream().filter(num -> num % 2 == 0).distinct().collect(Collectors.toList());
/* for (Integer integer : listThree) {
System.out.println(integer);
}*/
/**
-
java8新特征 stream limit 限制数据出现的条数 limit返回包含前n个元素的流,当集合大小小于n时,则返回实际长度
-
两个是 10的数字
*/
List numsTwo = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
List listFour = numsTwo.stream().filter(num -> num == 10).limit(2).collect(Collectors.toList());
/*for (Integer integer : listFour) {
System.out.println(integer);
}*/
/**
-
java8新特征 stream skip 与limit操作相反 跳过前n个元素
-
跳过前两个,从第三个开始
*/
List numsFive = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
List listFive = numsFive.stream().filter(num -> num > 1).skip(2).collect(Collectors.toList());
/*for (Integer integer : listFive) {
System.out.println(integer);
}*/
/**
-
java8新特征 stream
-
计算和
*/
/**
-
java8新特征 stream map
-
拿到集合里实体类的某个字段
*/
List list2 = new ArrayList();
hlvy h2 = new hlvy();
hlvy h3 = new hlvy();
h2.setName("
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 开源分享
yanyan");
h2.setAge(18);
h3.setName(“heng”);
h3.setAge(18);
list2.add(h2);
list2.add(h3);
Integer ages = list2.stream().filter(list3 -> list3.getAge() > 1).mapToInt(hlvy::getAge).sum();
// System.out.println(ages);
/**
-
使用这些数值流的好处还在于可以避免jvm装箱操作所带来的性能消耗
-
flatMap 用于合并用
*/
List collected0 = new ArrayList<>();
collected0.add(1);
collected0.add(3);
collected0.add(5);
List collected1 = new ArrayList<>();
collected1.add(2);
collected1.add(4);
collected1 = Stream.of(collected0, collected1)
.flatMap(num -> num.stream()).collect(Collectors.toList());
// System.out.println(collected1);// 1,3,5,2,4
/**
-
java8新特征 allMatch 用于检测是否全部都满足指定的参数行为,如果全部满足则返回true
-
如果数组的数字全部大于7则返回true否则false
*/
List allMatchs = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
boolean listallMatchs = allMatchs.stream().allMatch(mas -> mas > 7);
// System.out.println(listallMatchs);
/**
-
java8新特征 anyMatch 检测是否存在一个或多个满足指定的参数行为,如果满足则返回true
-
如果数组的数字y有等于7的返回true
*/
List allMatchs2 = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
boolean listallMatchs2 = allMatchs2.stream().anyMatch(numt -> numt==7);
// System.out.println(listallMatchs2);
/**
- java8新特征 noneMathch 检测是否不存在满足指定行为的元素
*不存在返回true
*/
List allMatchs3 = Arrays.asList(1,2,2,3,4,5,6,6,7,8,9,10,10);
boolean listallMatchs3 = allMatchs3.stream().noneMatch(numt -> numt==17);
// System.out.println(listallMatchs3);
/**
- java8新特征 findFirst 返回满足条件的第一条元素
*/
List allMatchs4 = Arrays.asList(1,2,3,4,5,6,6,7,8,9,10,10);
Optional listallMatchs4 = allMatchs4.stream().filter(numt -> numt>1).findFirst();
if(listallMatchs4.isPresent()){//如果里面存有值
//System.out.println(listallMatchs4.get());
}
// 前面例子中的方法
int totalAge = list.stream()
.filter(hlvy -> “yanyan”.equals(hlvy.getName()))
.mapToInt(hlvy::getAge).sum();
// System.out.println(totalAge);
// 归约操作
int totalAge11 = list.stream()
.filter(hlvy -> “yanyan”.equals(hlvy.getName()))
.map(hlvy::getAge)
.reduce(0, (a, b) -> a + b);
// System.out.println(totalAge11);
// 进一步简化
int totalAge2 = list.stream()
.filter(hlvy -> “yanyan”.equals(hlvy.getName()))
.map(hlvy::getAge)
.reduce(0, Integer::sum);
//System.out.println(totalAge2);
// 采用无初始值的重载版本,需要注意返回Optional
Optional totalAge22 = list.stream()
.filter(hlvy -> “yanyan”.equals(hlvy.getName()))
.map(hlvy::getAge)
.reduce(Integer::sum); // 去掉初始值
// if (totalAge22.isPresent()) System.out.println(totalAge22.get());
/**
- 收集 前面利用collect(Collectors.toList())是一个简单的收集操作,是对处理结果的封装
*来自于java.util.stream.Collectors,我们可以称之为收集器。
*/
long count = list.stream().collect(Collectors.counting());
long count1 = list.stream().count();
//System.out.println(count+"-------"+count1);
/**