Lambda 方法引用

public static void main(String[] args) {
		Random random = new Random();
		List<Hero> heros = new ArrayList<Hero>();
		for (int i = 0; i < 10; i++) {
			heros.add(new Hero("hero" + i, random.nextInt(1000), random.nextInt(1000)));
		}
		System.out.println("初始化后的集合:");
		System.out.println(heros);
		System.out.println("使用Lambda的方式:筛选出 hp>100 && damage<50 的英雄 ");
		// filter(heros, hero -> hero.getFloHp() > 100 && hero.getIntDamage() < 50);

//		 调用静态方法,两种写法
//		filter(heros, hero -> testHero(hero));
//		filter(heros, TestLambda::testHero);

		// 调用对象方法
		TestLambda testLambda = new TestLambda();
		filter(heros, testLambda::testHero);

		// 引用构造器
		

	}

	// 使用匿名内部类的方式
	private static void filter(List<Hero> heros, HeroCheck heroCheck) {
		for (Hero hero : heros) {
			if (heroCheck.test(hero)) {
				System.out.println(hero);
			}
		}
	}

	private boolean testHero(Hero hero) {
		return hero.getFloHp() > 100 && hero.getIntDamage() < 50;
	}
public static void main(String[] args) {
		Supplier<List> s = new Supplier<List>() {
			@Override
			public List get() {
				return new ArrayList();
			}
		};

		// 匿名类
		List list1 = getList(s);
		
		//Lambda表达式
		List list2 = getList(()-> new ArrayList());
		
		//引用构造器
		List list3 = getList(ArrayList::new);		
	}

	public static List getList(Supplier<List> s) {
		return s.get();
	}
发布了8 篇原创文章 · 获赞 0 · 访问量 311

猜你喜欢

转载自blog.csdn.net/weixin_43804546/article/details/103092224