2021-06-12

2021/6/12 18:28:26

本文主要是介绍2021-06-12,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Stream流

  1. 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);
  1. 流·的中间操作
    1. filter()操作:
      Stream filter(Predicate predicate)
      Predicate接口中的方法 bollean test();对给定的参数进行判断,返回一个布尔值
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);
  1. 终结操作
    1. forEach(Consumer action)
      对此流的每个元素执行操作
      Consummer接口中的方法 voidaccept(T t)对给定的参数执行此操作、
    2. long count();
      返回此流中得元素数
  2. 收集操作
    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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程