08-JDK8新特性

 

Lambda表达式相关:

基础涉及: java 基础语音 、 03 java 语言高级 -  05 异常与多线程   -  Lambda

public class Mylearn_2 {
        public static void main(String[] args)   {
            
            
            //使用匿名内部类的方式实现多线程。
            new Thread(new Runnable() {
                public void run()
                {
                    System.out.println(Thread.currentThread().getName()+"新线程创建了");
                }
            }).start();
            
            
            lambdaDemo();
         }

        //使用lambda表达式、实现多线程
        public static void lambdaDemo()
        {
            new Thread(()->{
                    System.out.println(Thread.currentThread().getName()+"新线程创建了");
            }).start(); 
        }
        //lambda表达式   标准格式
        //由三部分组成:    a.一些参数、b.一个箭头、c.一段代码
        //格式:  (参数类型  参数名称)-> {代码语句}
        //解释说明格式:

}

 

 

例子:   用 lambda 表达式、 对Person对象进行排序(按年龄)。

这里面出现了toString方法的辨析、  在定义一个新类的时候,这个东西要撞上。

下面是代码:  (简单、先理解、再掌握)

import java.util.*;

public class Mylearn_2 {
        public static void main(String[] args)   {
            

            
         }
        
        public static void method_1()        //辅助理解toString方法。
        {
            Integer[] arr = {1,2,3,4,5,6};
            for(Integer x : arr)
            {
                System.out.println(x.toString());
            }
        }
        
        public static void lambda()       //lambda表达式对对象进行按年龄排序的操作
        {
            Person[] arr = {
                    new Person("柳岩",30),
                    new Person("地理热吧",20),
                    new Person("鼓励纳扎",21)
            };
 
            Arrays.sort(arr,(Person o1,Person o2)->{
                return o1.getAge()-o2.getAge();
            });
            
            for(Person p : arr)
            {
                System.out.println(p);
            }

        }
        
        public static void method()        //不用lambda表达式、传统的方法对这Person对象进行年龄排序。
        {
            Person[] arr = {
                    new Person("柳岩",30),
                    new Person("地理热吧",20),
                    new Person("鼓励纳扎",21)
            };
            
            Arrays.sort(arr,new Comparator<Person>() {
                public int compare(Person o1,Person o2)
                {
                    return o1.getAge()-o2.getAge();
                }
            }
            );
            for(Person p : arr)
            {
                System.out.println(p);
            }
            
        }
}

class Person 
{
    private String name ;
    private int age;
    Person(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    public int getAge()
    {
        return age;
    }
    public String getName()
    {
        return name;
    }
    public String toString()
    {
        return "Person{"+"name:"+name+",age:"+age+"}";
//        return "123";
        // 这里的toString方法是一定要存在的,可以注释后、打印 Person 任意对象
        //toString的讲解: https://blog.csdn.net/qq_34626097/article/details/83154781
    }
}

 

 

代码3 :

import java.util.*;

public class Mylearn_2 {
        public static void main(String[] args)   {
            
            method(120,130,new calculator(){
                public int calc(int a,int b)
                {
                    return a+b;
                }
            });
            
            
            //定义一个接口,内含一个方法,将两数相加
            // 通过lambda 表达式  算两个数的和
            method(120,130,(int a,int b)->{
            return a+b;    
            });
            
         }
        public static void method(int a, int b ,calculator c)
        {
            int sum =c.calc(a, b);
            System.out.println(sum);
        }
        
        
}

interface calculator
{
    public  abstract int calc(int a,int b);
}

 

 

posted @ 2019-11-22 14:13  蚂蚁雅黑1010  阅读(130)  评论(0编辑  收藏  举报