JDK1.8新特性之Stream使用(通过使用Stream+lambda操作集合对象)

Stream

【1】Stream是java在JDK1.8后提供的一个流式集合。用于操作集合的工具。里面提供了大量的只有一个抽象方法接口

【2】根据“只有一个抽象方法接口“的特性,我们很容易想到关于JDK1.8的接口新特性Lambda表达式。

可参考:https://blog.csdn.net/c17315377559/article/details/99122421

通过以下案例,来一起了解这个类。

【例题】找出下列以C开头的字母,并按ASCII码表的大小进行排序。使用Stream流的方式对List集合进行操作。

(china、cafe、hello、world、date、map、list、love,clear)

(1)使用匿名内部类的方法

public class StreamDemo {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("china");
		list.add("hello");
		list.add("cafe");
		list.add("world");
		list.add("date");
		list.add("map");
		list.add("list");
		list.add("love");
		list.add("clear");
		Stream<String> stream = list.stream();
		stream.filter(new Predicate<String>() {
			//过滤不以c开头的字符串
			@Override
			public boolean test(String t) {
				return t.startsWith("c");
			}
		}).sorted(new Comparator<String>() {
			//对剩下的字符串进行排序
			//使用compareTo的方法
			//如果返回的是负数,那么表示本对象小于传入的对象,是升序。
			//如果返回的是正数,那么表示本对象大于传入的对象,是降序。
			@Override
			public int compare(String o1, String o2) {
				return o1.compareTo(o2);
			}
		}).forEach(new Consumer<String>() {
			//foreach增强for循环
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});
	}

}

结果:

cafe
china
clear

使用filter方法对我们需要的内容进行过滤。实现Predicate接口中的test方法,返回false,则过滤掉。

使用sorted方法对我们需要的内容进行排序。实现Comparator接口中的compare方法,返回值为int。根据返回值的正负进行排序。

使用forEach方法对我们内容进行输出。

(2)使用lambda函数表达式进行

Stream<String> stream = list.stream();
		
stream.filter(t -> t.startsWith("c"))
.sorted((str1, str2) -> str1.compareTo(str2))
.forEach(t -> System.out.println(t));

由此可见,使用lambda表达式可以使我们的代码更加简洁。

关于lambda的内容,可以参考https://blog.csdn.net/c17315377559/article/details/99122421

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值