java 1.8 Lambda的简单使用举例


1.创建线程

new Thread(new Runnable() {
			public void run() {
				System.out.println("Before Java8, too much code for too little to do");
			}
		}).start();
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();

2.监听器

JButton show =  new JButton("Show");
show.addActionListener((e) -> {
	System.out.println("In Java8, Lambda expression rocks !!");
	});

3.遍历

List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
features.forEach(str -> System.out.println(str));
features.forEach(System.out::print);


4.搜索或过滤(用到了Predicate)

Predicate<String> containA = (str) -> str.contains("am");
Predicate<String> lengthEight = (str) -> str.length() < 8;
features.stream().filter(containA.and(lengthEight)).forEach(str -> System.out.println(str));

5.修改List中数据

List<Double> costBeforeTax = Arrays.asList(100.0, 200.0, 300.0, 400.0, 500.0);
Stream<Double> costBeforeTax2 = costBeforeTax.stream().map((cost) -> cost + .12*cost);
System.out.println(costBeforeTax2);
costBeforeTax2.forEach((tem) -> System.out.println(tem));
costBeforeTax.forEach(System.out::print);


6.过滤

List<String> strList = Arrays.asList("Lamb", "Def", "St", "Datea");
List<String> filtered = strList.stream().filter(str -> str.length() > 2).collect(Collectors.toList()); 
filtered.forEach(System.out::println);


7.类似数据库,IntSummaryStatistics的使用

List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics summary = primes.stream().mapToInt((n) -> n).summaryStatistics();
System.out.println("Highest prime number in List : " + summary.getMax());
System.out.println("Lowest prime number in List : " + summary.getMin());
System.out.println("Sum of all prime numbers : " + summary.getSum());
System.out.println("Average of all prime numbers : " + summary.getAverage());





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 1.8中,可以使用lambda表达式将List转换为Map。具体实现方法如下: 首先,我们需要创建一个List对象: ```java List<String> list = new ArrayList<>(); list.add("apple"); list.add("orange"); list.add("banana"); ``` 然后,我们可以使用lambda表达式将List转换为Map: ```java Map<String, Integer> map = list.stream() .collect(Collectors.toMap(Function.identity(), String::length)); ``` 这行代码的意思是将List中的元素作为Map的key,将元素的长度作为Map的value。其中,`Function.identity()`表示将元素本身作为key,`String::length`表示将元素的长度作为value。 我们也可以使用lambda表达式将List中的元素转换为自定义的对象,并将其作为Map的value: ```java List<Person> list = new ArrayList<>(); list.add(new Person("Tom", 20)); list.add(new Person("Jerry", 30)); list.add(new Person("Kate", 25)); Map<String, Integer> map = list.stream() .collect(Collectors.toMap(Person::getName, Person::getAge)); ``` 这行代码的意思是将List中的Person对象的name作为Map的key,将age作为Map的value。 注意,如果List中有重复的元素作为key,那么会抛出`java.lang.IllegalStateException`异常。此时,我们可以使用第三个参数来指定如何解决冲突,例如: ```java Map<String, Integer> map = list.stream() .collect(Collectors.toMap(Person::getName, Person::getAge, (a, b) -> a)); ``` 这行代码的意思是,如果出现重复的key,那么保留第一个key对应的value,忽略后面的value。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值