新特性lambda函数的使用

package com.hrf.newFeature;

public interface Dao {
//	1.方法没有参数没有返回值.
	void show();
}

package com.hrf.newFeature;

public interface Dao2 {
//	2.方法有参数没有返回值
	void show2(int i);
}

package com.hrf.newFeature;

public interface Dao3 {
//	3.多个参数的
	void show(int x, int y);
}

package com.hrf.newFeature;

public interface Dao4 {
//	含返回值的
	int sum(int x, int y);
}

package com.hrf.newFeature;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

// lambda匿名函数
public class Lambda01 {
	
	public static void main(String[] args) {
//		1.单语句的
		Dao dao =() -> System.out.println("输出的结果!");
//		1.2多语句的
		Dao dao2 =() ->{
			System.out.println("输出的结果!1");
			System.out.println("输出的结果!2");
			System.out.println("输出的结果!3");
		};
//		使用
		dao.show();
		dao2.show();
//		2.一个参数的Dao2 dao3 =(x)括号可以不要但是多个参数不行
		Dao2 dao3 =(x) -> System.out.println(x);
		dao3.show2(10);
//		3.多个参数的
		Dao3 dao4 =(x,y) -> System.out.println(x + y);
		dao4.show(10, 20);
//		4.多个参数的含返回值的
		Dao4 dao5 =(x,y) -> (x / y);
		int s = dao5.sum(100, 20);
		System.out.println(s);
//		5.多个参数的含返回值的,如果使用语句块,那么必须使用return
		Dao4 dao6 =(x,y) -> {
			if(x > y) {
				return x + y;
			}else {
				return y - x;
			}
		};
		int s1 = dao5.sum(100, 20);
		System.out.println(s1);
//		6.排序,使用lambda函数可以得到任意排序
		Comparator<Integer> comparator = (x,y) -> y-x;
//		自定义排序的方式.
		Set<Integer> set = new TreeSet<>(comparator);
		set.add(9);
		set.add(4);
		set.add(5);
		set.add(3);
//		treeSet本身可以排序从小到大
		System.out.println(set);
//		7.排序,使用lambda函数可以得到任意排序
//		自定义排序的方式.字符串长度排序
		Set<String> set1 = new TreeSet<>((x,y)->x.length() - y.length());
		set1.add("hello");
		set1.add("worl");
		set1.add("he");
//		treeSet本身可以排序从小到大
		System.out.println(set1);
//		8.对自定义类使用lambda函数
//		创建对象
		Person p1 = new Person("张三", 23);
		Person p2 = new Person("张三图", 21);
		Person p3 = new Person("张三啊", 20);
		List<Lambda01.Person> list = new ArrayList<Lambda01.Person>();
		list.add(p1);
		list.add(p2);
		list.add(p3);
//		8.1年龄大于18的排序
//		过滤,变成流过滤
		list.stream().filter(el -> el.getAge() > 18).forEach(System.out::println);
//		8.2 按照年龄排序,如果年龄相同,按照姓名排序
		Collections.sort(list, (a, b) ->{
			if(a.getAge() - b.getAge() == 0) {
				return a.getName().compareTo(b.getName());
			}else {
				return Integer.compare(a.getAge(), b.getAge());
			}
		});
//		输出
//		list.forEach(System.out::println);
		list.forEach(el -> System.out.println(el.getName() + "\t" + el.getAge()));
	}

	
	public static class Person {
		String name;
		Integer age;
		public Person() {
			// TODO Auto-generated constructor stub
		}
		public Person(String name, Integer age) {
			super();
			this.name = name;
			this.age = age;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public Integer getAge() {
			return age;
		}
		public void setAge(Integer age) {
			this.age = age;
		}
		@Override
		public String toString() {
			return "Person [name=" + name + ", age=" + age + "]";
		}
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值