• jdk1.8 新特性


    jdk1.8比之前的1.7/1/6/1/5增加了不少新特性

    1.stream().map() 将对象转换成另一个对象

    @Test
        public  void text1() {
              List<Staff> staff = Arrays.asList(
    
                        new Staff("mkyong", 30, new BigDecimal(10000)),
    
                        new Staff("jack", 27, new BigDecimal(20000)),
    
                        new Staff("lawrence", 33, new BigDecimal(30000))
    
                );
    
         
    
                // convert inside the map() method directly.
    
                List<StaffPublic> result = staff.stream().map(temp -> {
    
                    StaffPublic obj = new StaffPublic();
    
                    obj.setName(temp.getName());
    
                    obj.setAge(temp.getAge());
    
                    if ("mkyong".equals(temp.getName())) {
    
                        obj.setExtra("this field is for mkyong only!");
    
                    }
    
                    return obj;
    
                }).collect(Collectors.toList());
    
         
    
                System.out.println("1:"+result);
    
        }
    public class Staff {
         private String name;
    
            private int age;
    
            private BigDecimal salary;
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
    
            public void setAge(int age) {
                this.age = age;
            }
    
            public BigDecimal getSalary() {
                return salary;
            }
    
            public void setSalary(BigDecimal salary) {
                this.salary = salary;
            }
    
            public Staff(String name, int age, BigDecimal salary) {
                super();
                this.name = name;
                this.age = age;
                this.salary = salary;
            }
    
            @Override
            public String toString() {
                return "Staff [name=" + name + ", age=" + age + ", salary="
                        + salary + "]";
            }
            
            
    }
    public class StaffPublic {
         private String name;
    
            private int age;
    
            private String extra;
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
    
            public void setAge(int age) {
                this.age = age;
            }
    
            public String getExtra() {
                return extra;
            }
    
            public void setExtra(String extra) {
                this.extra = extra;
            }
    
            public StaffPublic() {
                super();
                // TODO Auto-generated constructor stub
            }
    
            public StaffPublic(String name, int age, String extra) {
                super();
                this.name = name;
                this.age = age;
                this.extra = extra;
            }
    }

    反馈结果:

    1:[zjjysjz2019_model.StaffPublic@7f77e91b, zjjysjz2019_model.StaffPublic@44a664f2, zjjysjz2019_model.StaffPublic@7f9fcf7f]

    2 Streams Collectors groupingBy  进行分组,并显示每组的个数

    @Test
        public  void text2() {
              //3 apple, 2 banana, others 1
            List<String> items =
                    Arrays.asList("apple", "apple", "banana",
                            "apple", "orange", "banana", "papaya");
            Map<String, Long> result =items
                    .stream()
                    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
            System.out.println(result);
    
            Map<String, Long> finalMap = new LinkedHashMap<>();
            //reversed 反排序
            result.entrySet().stream()
                    .sorted(Map.Entry.<String, Long>comparingByValue()
                            .reversed()).forEachOrdered(e -> finalMap.put(e.getKey(), e.getValue()));
            System.out.println(finalMap);
        }

    反馈结果:

    {papaya=1, orange=1, banana=2, apple=3}
    {apple=3, banana=2, papaya=1, orange=1}

  • 相关阅读:
    DOM 高级编程笔记
    什么是目标管理?什么叫smart原则?
    HTML文档中小meta的大作用
    《javascript权威指南》基础笔记 重要
    应聘时最漂亮的回答 转
    JS在IE和Firefox之间的区别
    apply与call的用法及区别
    谈谈Ajax跨域
    《高性能网站建设指南》、《高性能网站建设进阶指南》笔记
    HTTP协议状态码详解(HTTP Status Code)
  • 原文地址:https://www.cnblogs.com/hzcjd/p/13612068.html
Copyright © 2020-2023  润新知