Ok fine 让我们开始吧彦祖们
来吧上来先for example(For一个zan po)
给一堆名字找出来其中姓zhang的彦祖,要第二、三个人
来吧practice一下(show一下my的English level)
1.emm有点麻烦
2.好像也没啥区别哇
3. 这个怎么说呢反正你1.8以下是用不了
让我们切换一个jdk1.8
红了吧彦祖们
再切回来,你看看不红了不红了
欸~那为什么呢这是为什么呢xdm,咱也不造呀查一下
哦~原来是1.9以后才发明的呀,你们知道了嘛彦祖们
那让我们来完成这个题吧这点小问题难不倒彦祖们吧!
那让我们用stream来试试吧
怎么样彦祖们是不是很容易是不是嘎嘎牛
流的创建
下面我们来看看流的创建
1.List创建
2. Set创建
可以保证数据的唯一性
3.Map创建
键不可重复
4.Stream创建
5.Collection集合创建
6.Array数组创建
中间符操作
1.filter
public static void main(String[] args) {
int[] arr = {1,2,6,8,2,3,8};
Arrays.stream(arr).filter(intV -> intV > 5).forEach(s -> System.out.println(s));
}
2. map
map()
方法是一个映射操作,它接受一个函数作为参数,并将该函数应用于流中的每个元素。这个函数会将输入元素转换为一个新的元素,然后将这个新元素放入一个新的流中。换句话说,map()
方法会将一个流中的元素映射成为另一个流中的元素。
List<Employee> employees = Arrays.asList(
new Employee("John", 25),
new Employee("Jane", 30),
new Employee("Bob", 35));
employees.stream().map(Employee::getName).forEach(System.out::println);
3.dictinct
List<Integer> list = List.of(3, 3, 3, 5, 1,5,6, 2, 1, 5, 6, 85, 202);
list.stream().distinct().forEach(System.out::println);
4.sorted
List<Employee> employees = Arrays.asList(
new Employee("John", 25),
new Employee("Jane", 37),
new Employee("Bob", 35));
employees.stream()
.sorted(Comparator.comparing(Employee::getAge).reversed())
.collect(Collectors.toList())
.forEach(System.out::println);
那真是ku dang 里着火----------当然了,各位彦祖们要记得重写toString方法哦要不然出来的回事这样的
那我肯定写的是对的(极其嘴硬!!!好吧我当时就是这样的找了老半天发现是这个低端错误)。
5.skip
List<Integer> list = List.of(3, 3, 3, 5, 1,5,6, 2, 1, 5, 6, 85, 202);
list.stream().skip(6).forEach(System.out::println);
6.limit
List<Integer> list = List.of(3, 3, 3, 5, 1,5,6, 2, 1, 5, 6, 85, 202);
list.stream()
.skip(6)
.limit(1)
.forEach(System.out::println);
7.concat
将两个流合并成一个流
List<String> list = Arrays.asList("张三", "李四", "王二麻子", "李大狗蛋儿", "张坤坤", "王大壮士", "张三丰", "张背带裤", "张太美");
Stream<String> s1 = list.stream().skip(2);
Stream<String> s2 = list.stream().limit(5);
Stream.concat(s1,s2).forEach(System.out::println);
终端符操作
1.forEach
这个就不赘述啦,相信以各位彦祖们的肯定都会!
2.count
3.max
4.min
5.sum
6.findFirst
找出第一个姓王的人
List<String> list = Arrays.asList("张三", "李四", "王二麻子", "李大狗蛋儿", "张坤坤", "王大壮士", "张三丰", "张背带裤", "张太美");
System.out.println(list.stream()
.filter(s -> s.startsWith("王"))
.findFirst());
7.collect
1)toList
List<String> list = Arrays.asList("张三-3", "李四-5", "王二麻子-28", "李大狗蛋儿-37", "张坤坤-8", "王大壮士-32", "张三丰-108", "张背带裤-36", "张太美-95");
List<String> collect = list.stream().filter(s -> Integer.parseInt(s.split("-")[1]) > 12).collect(Collectors.toList());
System.out.println(collect);
2)toSet
List<Integer> list = List.of(3, 3, 3, 5, 1,5,6, 2, 1, 5, 6, 85, 202);
Set<Integer> collect = list.stream().collect(Collectors.toSet());
System.out.println(collect);
3)toMap
List<String> list = Arrays.asList("张三-3", "李四-5", "王二麻子-28", "李大狗蛋儿-37", "张坤坤-8", "王大壮士-32", "张三丰-108", "张背带裤-36", "张太美-95");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(s -> s.split("-")[0], s -> Integer.parseInt(s.split("-")[1])));
System.out.println(map);