jdk8之stream流新特性

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据,极大的简洁了你的代码,干净,直观。

遍历

        List<String> lists=Arrays.asList("1","2","3","4");
        lists.stream().forEach(System.out::println);

过滤

    List<User> users= new ArrayList<User>();
    users.add(new User("小明",18));
    users.add(new User("老王",45));
    users.add(new User("小红",15));
    users.stream().filter(u->u.getAge()>17).forEach(System.out::println);

结果

排序

     //根据元素排序
        List<Integer> list = Arrays.asList(1,3,40,25,16,17,100);
        list = list.stream().sorted().collect(Collectors.toList());
        System.out.println("正序:"+list);
        list  = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        System.out.println("倒序:"+list);
        //根据属性排序
        List<User> users =new ArrayList();
        users.add(new User("小一",18));
        users.add(new User("小二",30));
        users.add(new User("小三",25));
        users.add(new User("小四",60));
        users.add(new User("小五",6));
        users =users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
        System.out.println("属性升序:"+users);
        users =users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
        System.out.println("属性降序:"+users);

结果

Map操作

场景:获取某个属性的集合

       List<User> users =new ArrayList();
        users.add(new User("小一",18));
        users.add(new User("小二",30));
        users.add(new User("小三",25));
        users.add(new User("小四",60));
        users.add(new User("小五",6));
        List<Integer> list =users.stream().map(User::getAge).collect(Collectors.toList());
        System.out.println("年龄集合:"+list);

结果集

将流中元素收集到另外一个目标中

  List<String> example =	Arrays.asList("1","2","3","4");
	   //转换为list
       List<String>  list = example.stream().collect(Collectors.toList());
       //转换为set
       Set<String> 	set	  =	example.stream().collect(Collectors.toSet());
       //如果想要控制获得集的种类
       TreeSet		treeset	= example.stream().collect(Collectors.toCollection(TreeSet::new));
       //连接操作合成字符串
       String	    str	= example.stream().collect(Collectors.joining());		
       //分隔符连接成字符串				
       String	    strappend	= example.stream().collect(Collectors.joining("-"));											
       
       System.out.println("list---->"+list);
       System.out.println("set---->"+set);
	   System.out.println("treeset----->"+treeset);	
	   System.out.println("str----->"+str);
	   System.out.println("strappend--->"+strappend);	

在这里插入图片描述

映射成键值对

List<Person> persons =   Arrays.asList(new Person("小一", "男", "110"),new Person("小二", "男", "111"),new Person("小三", "男", "112")
			        ,new Person("小四", "男", "113"),new Person("小五", "男", "114"));
	Map<String,String> map1 =	persons.stream().collect(Collectors.toMap(Person::getPhone, Person::getName));
	Map<String,Person> map2 =	persons.stream().collect(Collectors.toMap(Person::getPhone, Function.identity()));   
	System.out.println("map1---->"+map1);
	System.out.println("map2---->"+map2);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值