JDK 1.8 新特性 (笔记)

一边学习一边记录,并且附上看过的博客链接。
https://www.cnblogs.com/jacksontao/p/8608291.html

https://www.cnblogs.com/aoeiuv/p/5911692.html 挺好的

首先 default 关键字:
使用次关键字可以在接口中定义非抽象方法(拥有方法体)

Lambda 表达式:
重:能够接收Lambda表达式的参数类型,是一个只包含一个方法的接口。只包含一个方法的接口称之为“函数接口”。
入门链接:https://www.cnblogs.com/yulinfeng/p/8452379.html

public class Lambda{
	
	public interface ILambda{	//搞一个接口
		boolean test(int x);
	}
	
	@Test
	public void A() {
		/**
		 * 
		 匿名内部类普通调用
		func(new ILambda() {
			@Override
			public boolean test(int x) {
				System.out.println("这个是普通调用接口"+x);
				return true;
			}
		});
		*/
		
		/**
		 * Lambda表达式写法
		 * 	finc((参数) ->{函数主提}) 如果函数主体没有什么代码可以不使用{}
		 */
		boolean a = func((int x)-> {
			System.out.println("这个是Lambda调用接口"+ ++x);
			return true;
		});
		System.out.println(a);
	}
	
	public boolean func(ILambda iLambda) {
		int x = 1;
		return iLambda.test(x);
	}
	
}

流 Stream:

	对一个集合进行遍历操作之前使用的方法是for或者foreach 循环遍历。如今我们可以使用集合的forEach方法配合Lambda 表达式来进行遍历
	实际使用方法和普通遍历并没有实质区别。
	代码:
List<Person> javaProgrammers = new ArrayList<Person>();
		javaProgrammers.add(new Person("Elsdon", "Jaycob", "Java programmer", "male",
	                43, 2000));
		javaProgrammers.add(new Person("Tamsen", "Brittany", "Java programmer",
	                "female", 23, 1500));
		javaProgrammers.add(new Person("Floyd", "Donny", "Java programmer", "male", 33,
	                1800));
		javaProgrammers.add(new Person("Sindy", "Jonie", "Java programmer", "female",
	                32, 1600));
		javaProgrammers.add(new Person("Vere", "Hervey", "Java programmer", "male", 22,
	                1200));
		javaProgrammers.add(new Person("Maude", "Jaimie", "Java programmer", "female",
	                27, 1900));
		javaProgrammers.add(new Person("Shawn", "Randall", "Java programmer", "male",
	                30, 2300));
		javaProgrammers.add(new Person("Jayden", "Corrina", "Java programmer", "female",
	                30, 1700));
		javaProgrammers.add(new Person("Palmer", "Dene", "Java programmer", "male", 33,
	                2000));
		javaProgrammers.add(new Person("Addison", "Pam", "Java programmer", "female",
	                30, 1300));


List<Person> lis = new LinkedList<Person>();	//新创建的空集合
		javaProgrammers.forEach((m) -> {  //javaProgrammers集合调用forEach方法配合Lambda 表达式((参数) -> 逻辑)
			if(m.getSalary() >=40) {	
				Person pera = new Person();
				pera.setAge(m.getAge());
				pera.setFirstName(m.getFirstName());
				lis.add(pera);	//将对象数据放入空集合中
			}
		});
		System.out.println(lis.toString());	//打印

Stream 进行分组操作

//Person 为返回的实体类对象 、:: 后面getSalary为该对象中salary变量的getSalary方法不要()
Map<Integer, List<Person>> map = (javaProgrammers.stream().collect(Collectors.groupingBy(Person :: getSalary)));

System.out.println(map.toString());

LAMBDA表达式排序

//list 为要排序的集合 (a,b)为集合中的对象(此处省略了写返回对象) 使用.compareTo方法进行比较排序
list.sort((a ,b)->a.getAddTime().compareTo(b.getAddTime()));

猜你喜欢

转载自blog.csdn.net/weixin_42563880/article/details/88314809
今日推荐