Stream流
基本概念:以更简便的方式操作集合数据的形式;
Steam流的操作步骤:
获取Stream流
中间方法:去重,跳过,获取, 过滤, 合并流,转换类型;
终结方法:遍历,统计,收集(进数组 / 进集合);
小练习
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
//将集合中的元素提取并转换
public class Streamdemo02 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("zhangsan,23");
list1.add("lisi,24");
list1.add("wangwu,25");
// list1.stream()
// .filter(s -> Integer.parseInt(s.split(",")[1]) >= 24)
// .collect(Collectors.toMap(new Function<String, String>() {
// @Override
// public String apply(String s) {
// return s.split(",")[0];
// }
// }, new Function<String, Integer>() {
// @Override
// public Integer apply(String s) {
// return Integer.parseInt(s.split(",")[1]);
// }
// }));
Map<String, Integer> map = list1.stream().
filter(s -> Integer.parseInt(s.split(",")[1]) >= 24)
.collect(Collectors.toMap(
s -> s.split(",")[0],
s -> Integer.parseInt(s.split(",")[1])));
System.out.println(map);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
//去除奇数保留偶数
public class Streamdemo01 {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<Integer>();
// for(int i = 1; i <= 10; i++) list1.add(i);
Collections.addAll(list1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Stream<Integer> stream1 = list1.stream();
// stream1.filter(new Predicate<Integer>() {
// @Override
// public boolean test(Integer integer) {
// return integer % 2 == 1;
// }
// }).forEach(integer -> System.out.println(integer));
List<Integer> newList = list1.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(newList);
}
}
方法引用概述
1. 基本概念:将已经存在的方法引用,作为函数式接口中抽象方法的方法体;
2.特点: “ ::” 符号,方法引用符;
3.注意事项
- 需要有函数式接口
- 被引用方法的参数和返回值应和抽象方法保持一致;
- 被引用方法应满足使用需求;
4.分类
算法部分:乘法逆元,组合数http://t.csdnimg.cn/ii0mi