JAVA8-stream

Stream

  • 统计字符串中每个字符出现的次数

	String str = "ajklfdaaabjfdfjkajaaa";
 	Map map = Arrays.stream(str.split("")).sorted().collect(Collectors.groupingBy(t->t,Collectors.counting()));
        System.out.println(map);
  • mapping
	List<String> list = Arrays.asList("123","456","789","1101","212121121","asdaa","3e3e3e","2321eew");

	
	List<String> result = list.stream().collect(Collectors.mapping(s->s+"tmp",Collectors.toList()));
	System.out.println(result);
  • 统计前三个元素的长度和
     
     //初始值,map函数,reduce函数
     int length = list.stream().limit(3).collect(Collectors.reducing(0,String::length,Integer::sum));
     int length2 = list.stream().limit(3).collect(Collectors.reducing(0,t->t.length(),(a,b)->a+b));
     System.out.println(length);
     System.out.println(length2);
  • 将list按照条件分为两部分
      
      Map<Boolean,List<String>> part = list.stream().collect(Collectors.partitioningBy(t->t.length()>3));
      System.out.println(part);
  • 将list转为Map<String,List>
    
      Map<Integer,List<String>> listToMap = list.stream().collect(Collectors.toMap(s->s.length(),p->{
          List tmp = new ArrayList<>();
          tmp.add(p);
          return tmp;
      },(List<String> a,List<String> b)->{
          a.addAll(b);
          return a;
      }));
      System.out.println(listToMap);

Optional实例

public class Demo {

    public static void main(String[] args){
        User user  =new User("yyy2","women",11,"tttt");
        //如果值不为空,不会调用createUser
        User result = Optional.ofNullable(user).orElseGet(()->createUser());
        System.out.println(result.getName());

        //不论值为不为空,都会调用createUser
        result = Optional.ofNullable(user).orElse(createUser());
        System.out.println(result.getName());

//        user.setName(null);
        String name = Optional.ofNullable(user).map(u->u.getName()).orElse("yqq");
        System.out.println(name);
    }

    private static User createUser() {
        System.out.println("create user");
       return new User("yyy","women",11,"tttt");
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值