JAVA8之初见

本文介绍了Java8的重要新特性,包括方法引用、Lambda表达式、Stream流API及默认方法等,通过实例展示了如何利用这些特性提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:方法引用

方法引用是java8中引入的新的概念--方法参数化的一种应用.即可以把方法当成参数进行传递.注意:方法中请慎重勿使用共享资源

例子:

	//以往写法
		File[] listFiles = new File(".").listFiles(new FileFilter() {
			public boolean accept(File file) {
				return file.isHidden();
			}
		});
		//java8写法
		File[] listFiles = new File(".").listFiles(File::isHidden);
正如一些编程大牛说的:这样的代码读起来才有诗意!---------获取"."目录对象获取文件并根据是这个文件是否是隐藏进行筛选.

二,lambda表达式

lamdba表达式也是java8中对函数作为值得一种完美体现.

下面用一个例子去初窥lambda的神奇之处

试想一下,我们有一个apple类.有颜色,重量的属性.现在我们有一个装满很多不同apple的List集合.

试问如何筛选出某些颜色或者重量范围之内的苹果.也许你以前写过很多次这样无聊的code,下面看看java8是如何realize

//筛选出红色和蓝色苹果
		List<Apple> filterApples1 = apple1.filterApples(apples,(Apple a)->"red".equals(a.getColor())||"bule".equals(a.getColor()));
		//筛选出符合重量的苹果
		List<Apple> filterApples2 = apple1.filterApples(apples,(Apple a)->a.getWeigt()>1);
apple类

class Apple{
	public int weigt;
	public String color;
	public int getWerigh(){
		return weigt;
	}
	public String getColor(){
		return color;
	}
	public  List<Apple> filterApples(List<Apple> apples,Predicate<Apple> p){
		List<Apple> result=new ArrayList<Apple>();
		for (Apple apple : apples) {
			if(p.test(apple)){
				result.add(apple);
			}
		}
		return result;
	}
	public int getWeigt() {
		return weigt;
	}
	public String toString() {
		return "Apple [weigt=" + weigt + ", color=" + color + "]";
	}
	
}

其中predicate是"谓语".一个类似函数的恭喜,接收一个值返回true后者false.

三,stream流API

为了高效制造和处理java中的集合类,java8引入stream类---为我们提供了免费的并行操作集合API

例子:

apples.stream().filter((Apple a)->"red".equals(a.getColor())).collect(Collectors.toList());
这段代码的意思  挑选出红颜色的苹果.如果用传统的collections工具类来完成的话.也是可以的,但是满足不了我们高效的要求
四,默认方法

我们刚接触java的stream一定会很奇怪,collection接口和list接口等等集合类中凭空出现一个stream方法,而我们基于这些接口的实现类并没有因为没有实现这个方法而报错

这是为什么?难道接口的方法可以不用实现了么?

NO! 一个新的"bug补丁"出现了,默认方法.

public interface DefaultMethod {
	default void say(){
		System.out.println("我们没必要实现这个方法");
	}
	void eat();
}
class DefaultMethodTest implements DefaultMethod {

	public void eat() {
		System.out.println("我们必须实现这个方法");
	}
	
}
好啦,java8最为主要的几个要点已经大概给大家有所展示.休息一下,我们来详细了解下

java8的精彩之处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值