Lambda部分操作

Lambda表达式
包括Lambda内置接口和Steam等操作

// A code block
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collector;
import java.util.stream.Collectors;

public class E {
    public static void main(String[] args) {
        List<Person>list=new ArrayList(){
            {
                add(new Person("Mike",'m',5000,21));
                add(new Person("Rose",'f',15000,24));
                add(new Person("Mary",'f',2000,18));
                add(new Person("Jhon",'m',20000,27));
                add(new Person("Alice",'f',30000,30));
            }
        };

        //Consumer:accept(T t) 核心方法 foreach

        Consumer<Person>con=(p)->System.out.println(p.getName());
        con.accept(new Person("Alice",'f',3000,30));


        list.forEach(p->System.out.println(p.getName()));
        System.out.println("-------------------------------------");
        list.forEach(p->
                {p.setSalary(p.getSalary()+p.getSalary()*5/100);
                //System.out.println(p.getName()+" "+p.getSalary());
                System.out.printf("%s----%d\n",p.getName(),p.getSalary());
                }
        );

        //Predicate:test(T t) filter
//
        Predicate<String> pre=s->s.length()>3;
        System.out.println(pre.test("FOO"));
        System.out.println(pre.negate().test("FOO"));//negate非,否定


        //判断
        Predicate<String>pre2= Objects::isNull;
        System.out.println(pre2.test(null));
        Predicate<String>pre1= String::isEmpty;
        System.out.println(pre1.test(""));

        //Comporator:compare(t1,t2): max min sorted
        //排序
        list.stream().sorted((p1,p2)->p1.getName().compareTo(p2.getName()))
                .collect(Collectors.toList())
                .forEach(s->System.out.println(s.getName()));

        System.out.println(list.stream().max((p1,p2)->p1.getSalary()-p2.getSalary()).get().getName());//工资最高
        System.out.println(list.stream().min((p1,p2)->p1.getSalary()-p2.getSalary()).get().getName());//工资最低

        System.out.println(list.stream().map(Person::getName).collect(Collectors.joining(":")));


        //Function apply(T) map
        // 三种不同的集合,HashSet HashMap TreeSet
        list.stream().map(Person::getName).collect(Collectors.toSet()).forEach(System.out::println);

        list.stream().collect(Collectors.toMap(Person::getName,Person::getSalary)).forEach((k,v)->System.out.println(k+v));

        list.stream().map(Person::getName).collect(Collectors.toCollection(TreeSet::new)).forEach(System.out::println);

        //Suppliers
        Supplier<Person>supplier=Person::new;//支持Person的::new动作
        Person person=supplier.get();//
        person.setName("Pike");
        System.out.println(person.getName());

        //map reduce示例
        List<Integer> costBeforeTax=Arrays.asList(100,200,300,400,500);
        costBeforeTax.stream().map(x->x+x*0.12).forEach(System.out::println);
        System.out.println(costBeforeTax.stream().map(x->x+x*0.12).reduce((s,p)->s+p).get());//所有的值合成一个

        //match示例  匹配
        System.out.println(list.stream().anyMatch(p->p.getName().startsWith("Mike")));//有一个叫Mike
        System.out.println(list.stream().allMatch(p->p.getName().startsWith("Mike")));//全叫Mike
        System.out.println(list.stream().noneMatch(p->p.getName().startsWith("Mike")));//全都不叫Mike

        //Count 总结其个数
        System.out.println(list.stream().filter(p->p.getName().startsWith("A")).count());//前缀为A的有几个

        //parallelStream 并行流
        list.parallelStream().forEach(s->System.out.println(s.getName()));
        list.parallelStream().forEachOrdered(s->System.out.println(s.getName()));

       // Stream-ToIntFunction

        List<Integer> numbers=Arrays.asList(1,2,3,4,5,6,7,8,9,10);
        IntSummaryStatistics s=numbers.parallelStream().mapToInt(x->x).summaryStatistics();
        System.out.println(s.getMax());
        System.out.println(s.getAverage());
        System.out.println(s.getMin());
        System.out.println(s.getCount());
        System.out.println(s.getSum());

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值