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