java lambda例子

		List<Person> list=new LinkedList<>();
		Person p1=new Person("zhangsan", 1);
		Person p2=new Person("lisi",3);
		Person p3=new Person("wangwu",2);
		Person p4=new Person("wangwu",4);
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		
		//用新的stream通过转化后代替旧的  zhangsan,lisi,wangwu,wangwu,
		list.stream().flatMap(o->Stream.of(o.getName()+",")).forEach(System.out::print);
		System.out.println();
		
		//过滤Id>1的转成list [Person [name=lisi, id=3, addr=null], Person [name=wangwu, id=2, addr=null], Person [name=wangwu, id=4, addr=null]]
		List<Person> l=list.stream().filter(o->o.getId()>1).collect(Collectors.toList());
		System.out.println(l);
		
		//提取 name 字段转list [zhangsan, lisi, wangwu, wangwu]
		List<String> l1=list.stream().map(o->o.getName()).collect(Collectors.toList());
		System.out.println(l1);
		
		//提取id字段 算总和  9
		int sum = list.stream().filter(o->o.getId()>1).mapToInt(o->o.getId()).sum();
		System.out.println(sum);
		
		//提取id和那么转map  {1=zhangsan, 2=wangwu, 3=lisi, 4=wangwu}
		Map<Integer, String> collect = list.stream().collect(Collectors.toMap(o->o.getId(), o->o.getName()));
		System.out.println(collect);
		
		//提取name字段转TreeSet  [lisi, wangwu, zhangsan]
		TreeSet<String> collect3 = list.stream().map(Person::getName).collect(Collectors.toCollection(TreeSet::new));
		System.out.println(collect3);
				
		//按name分组  {lisi=[Person [name=lisi, id=3, addr=null]], zhangsan=[Person [name=zhangsan, id=1, addr=null]], wangwu=[Person [name=wangwu, id=2, addr=null], Person [name=wangwu, id=4, addr=null]]}
		Map<String, List<Person>> collect2 = list.stream().collect(Collectors.groupingBy(Person::getName));
		System.out.println(collect2);
		
		//按 , 号拼接name字段  zhangsan,lisi,wangwu,wangwu
		String collect4 = list.stream().map(Person::getName).collect(Collectors.joining(","));
		System.out.println(collect4);
		
		//按 , 号 ,()为头尾, 拼接name字段  (zhangsan,lisi,wangwu,wangwu)
		String collect5 = list.parallelStream().map(Person::getName).collect(Collectors.joining(",","(",")"));
		System.out.println(collect5);
		
		//按name分组,算id总和  {lisi=3, zhangsan=1, wangwu=6}
		Map<String, Integer> collect7 = list.stream().collect(Collectors.groupingBy(Person::getName,Collectors.summingInt(Person::getId)));
		System.out.println(collect7);
		
		//按id>1 分成key为true和false的两个map  {false=[Person [name=zhangsan, id=1, addr=null]], true=[Person [name=lisi, id=3, addr=null], Person [name=wangwu, id=2, addr=null], Person [name=wangwu, id=4, addr=null]]}
		Map<Boolean, List<Person>> collect8 = list.stream().collect(Collectors.partitioningBy(person -> person.getId()>1));
		System.out.println(collect8);
		
		//按name字段,算每个那么字段的个数   {lisi=1, zhangsan=1, wangwu=2}
		Map<String, Long> collect10 = list.stream().collect(Collectors.groupingByConcurrent(Person::getName,Collectors.counting()));
		System.out.println(collect10);
		
		//按id字段 作为比较   Person [name=zhangsan, id=1, addr=null]Person [name=wangwu, id=2, addr=null]Person [name=lisi, id=3, addr=null]Person [name=wangwu, id=4, addr=null]
		list.sort(Comparator.comparing(p->p.getId()));
		list.stream().forEach(System.out::print);
		System.out.println();
		
		//按id比较的另一种写法  Person [name=zhangsan, id=1, addr=null]Person [name=wangwu, id=2, addr=null]Person [name=lisi, id=3, addr=null]Person [name=wangwu, id=4, addr=null]
		list.sort((o1,o2)->o1.getId()-o2.getId());
		list.forEach(System.out::print);
		System.out.println();
		
		//按name比较,相等时使用id字段,反序排列  Person [name=lisi, id=3, addr=null]Person [name=wangwu, id=2, addr=null]Person [name=wangwu, id=4, addr=null]Person [name=zhangsan, id=1, addr=null]
		list.sort(Comparator.comparing(p->((Person) p).getName()).thenComparing(p->((Person) p).getId()).reversed());
		list.stream().forEach(System.out::print);
		System.out.println();
		
		//按自定义实现了Comparator接口的比较器排序
		list.sort(Comparator.comparing(p->p.getName(),new StringComparator()));
		list.forEach(System.out::print);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值