【Java脱坑指南】Java8 Consumer的使用


import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

/**
 *  Consumer 就是花里胡哨的美化处理数据而已,传说中的语法糖
 * @date 2019年7月26日 上午11:36:20
 */
public class ConsumerTest {
	
	//  比如,我有一个 Book类
	class Book {
		private String bookName;
		private Integer bookPrice;
		/**
		 * @param bookName 书名
		 * @param bookPrice 定价
		 */
		public Book(String bookName, Integer bookPrice) {
			super();
			this.bookName = bookName;
			this.bookPrice = bookPrice;
		}
		public String getBookName() {
			return bookName;
		}
		public void setBookName(String bookName) {
			this.bookName = bookName;
		}
		public Integer getBookPrice() {
			return bookPrice;
		}
		public void setBookPrice(Integer bookPrice) {
			this.bookPrice = bookPrice;
		}
		@Override
		public String toString() {
			return "Book [bookName=" + bookName + ", bookPrice=" + bookPrice + "]";
		}
	}
	
	public static void main(String[] args) {
		// 在初始化时,不知哪位弟弟把 Book 价格设为了 1000,导致连续几年销量都是0
		Book b = new ConsumerTest().new Book("Effective java", 1000);
		System.out.println( " Befor, BOOK = " + b.toString());
		
		//几年后,公司招了另一个程序员来检查为啥卖不出去,他便使用 consumer 修改了属性
		Consumer<Book> consumer = book -> book.setBookPrice(50);
		consumer.accept(b);
		System.out.println( " After, BOOK = " + b.toString());
		
		/**
		 * 优雅的处理集合
		 */
		List<Book> bookList = new ArrayList<Book>();
		Book temp = null;
		// 先伪造一个集合类
		for(int i = 0; i < 10; i++) {
			temp = new ConsumerTest().new Book("JAVA" + i, i);
			bookList.add(temp);
		}
		// java8 之前处理集合
		System.out.println( " Befor JAVA8 ");
		for (Book book : bookList) {
			System.out.println(book.toString());
		}
		// java8之后
		System.out.println( " After JAVA8 ");
		bookList.forEach( (bookParam) -> {
			// 售价 6 元的改名
			if (bookParam.getBookPrice() == 6)
				bookParam.setBookName("六学家必备");
			System.out.println(bookParam.toString());
		});
		
	}
	
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值