2021-06-12
2021/6/12 18:28:26
本文主要是介绍2021-06-12,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Stream流
- Stream流的认识:
1. 生成流:
通过数据源集合,数组等 生成流
3. 中间操作:
一个操作流后面可以跟随零个或多个中间操作,其主要目的是打开流,做出某种程度的数据 过滤/映射,然后返回一个新的流交给下一个操作
filter()
4. 终结操作
一个流只能有一个终结操作,当这个操作执行后。流就被使用完了,无法再被操作,所以这必 定是流的最后一个操作
List<String> list = new ArrayList<>(); Stream<String> arraylist = list.Stream<>(); //Map体系 Map<String,Integer> map = new HashMap<>(); Stream<String> key = map.keySet().stream(); Stream<Integer> values = map.values().stream(); Stream<Map.Entry<String,Integer>> map1 = map.entrySet().stream(); //数组 Stream k = Stream.of(10,20,30);
- 流·的中间操作
- filter()操作:
Stream filter(Predicate predicate)
Predicate接口中的方法 bollean test();对给定的参数进行判断,返回一个布尔值
- filter()操作:
List<String> list = new ArrayList<>(); list.add("张3"); list.add("张无忌"); list.add("张三丰"); list.add("王五"); //选取姓氏为 张的 list.stream().filter(s ->s.startsWith("张") ).forEach(System.out::println); //选取名字长度为3的 list.stream().filter(s -> s.length() == 3).forEach(System.out::println); //选取姓氏为 张的名字长度为3的 list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out**::**println);
2. limit()操作 返回此流中的元素组成的流,截取指定参数个数的数据 3. skip()操作 跳过指定参数个数的数据,返回由该流的剩余元素组成的流
List<String> list = new ArrayList<>(); list.add("张3"); list.add("张无忌"); list.add("张三丰"); list.add("王五"); //输出前三个数据 list.stream().limit(3).forEach(System.out::println); System.out.println("____________________"); //跳过前两个数据输出 list.stream().skip(2).forEach(System.out::println); System.out.println("____________________"); //跳过前两个数据输出后两个数据 list.stream().skip(2).limit(2).forEach(System.out::println);
3. static <T> Stream<T> concat(Stream a,Stream b) 合并a和b两个流为一个流 4. distinct() 返回由该流的不同元素组成的流
List<String> list = new ArrayList<>(); list.add("张3"); list.add("张无忌"); list.add("张三丰"); list.add("王五"); Stream<String> li1 = list.stream().limit(3); Stream<String> li2 = list.stream().skip(2).limit(3); // Stream.concat(li1,li2).forEach(System.out::println); System.out.println("****************"); Stream.concat(li1,li2).distinct().forEach(System.out::println);
5. soted() 返回由此流的元素组成的流,根据自然顺序排序 6. sorted(Comparator comparartor) 返回由该流的元素组成的流,根据提供的Comparartor进行排序
List<String> list = new ArrayList<>(); list.add("cdscfd"); list.add("vgnbhnh"); list.add("cvdfsvfd"); list.add("vdfbvvf"); list.add("vgde"); list.stream().sorted().forEach(System.out::println); System.out.println("***************"); list.stream().sorted((s1,s2) -> s1.length() - s2.length()).forEach(System.out::println); System.out.println("***************"); list.stream().sorted((s1,s2) -> {int num1 = s1.length() - s2.length();int num2 = num1 == 0?s1.compareTo(s2):num1;return num2; }).forEach(System.out::println);
7. <R> Stream <R> map(Function mapper) 返回由给定函数应用于此流的元素的结构组成的流 Function接口中的方法 R apply(T t) 8. IntStream mapTolnt(TolntFunction mapper) 返回一个IntStream其中包含将给定函数应用于此流的元素的结果 IntStream :表示原始的int流 TolntFunction接口中的方法 int applyAsint(T value)
List<String> list = new ArrayList<>(); list.add("10"); list.add("20"); list.add("5"); list.add("60"); list.add("0"); list.stream().map(Integer::parseInt).forEach(System.out::println); System.out.println("********************"); list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
- 终结操作
- forEach(Consumer action)
对此流的每个元素执行操作
Consummer接口中的方法 voidaccept(T t)对给定的参数执行此操作、 - long count();
返回此流中得元素数
- forEach(Consumer action)
- 收集操作
R collect(Collector clooector);参数为一个Collector接口
工具Collectors提供了具体的收集方式
public staticCollector toList();把元素收集到List集合中
public staticCollector toSet(); 把元素收集到Set集合中
public static CollectortoMap(Eunction KeyMapper,Function valuMapper);把元素收集到Map集合中
这篇关于2021-06-12的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解