java8 lambda 使用学习

1. group by 使用

class BlogPost {

    String title;

    String author;

    BlogPostType type;

    int likes;

}

List<BlogPost> posts = Arrays.asList( ... );

 

Map<BlogPostType,List<BlogPost>> postsPerType=posts.stream().collect(groupingBy(BlogPost::getType))

 

Map<Tuple,List<BlogPost>>postsPerTypeAndAuthor =posts.stream().collect(groupingBy(post -> new Tuple(post.getType(), post.getAuthor())))

 

Map<Integer, Set<String>> result = givenList.stream()

  .collect(groupingBy(String::length, toSet()));

 

2. list to Map 使用

class Book {

    private String name;

    private int releaseYear;

    private String isbn;

     

    // getters and setters

}

public Map<String,String> listToMap(List<Book> books){

return book.stream().collect(Collects.toMap(Book::getIsbn, Book::getName))

}

Map<String, Integer> result = givenList.stream()

  .collect(toMap(Function.identity(), String::length))

 

3. reduce 使用

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

int result=numbers.stream().reduce(0, (subtotal, element) -> subtotal + element);

 

int result = numbers.stream().reduce(0, Integer::sum);

 

4.forEach()

List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

ins.stream().forEach(i->{

if (i.intValue() % 2 == 0) {

            Assert.assertTrue(i.intValue() % 2 == 0);

        } else {

            Assert.assertTrue(i.intValue() % 2 != 0);

        }

})

 

4.Collectors 使用

 

List<String> givenList = Arrays.asList("a", "bb", "ccc", "dd");

List<String> result = givenList.stream()

  .collect(toList());

Set<String> result = givenList.stream()

  .collect(toSet()); // 去掉重复的

List<String> result = givenList.stream().collect(toCollection(LinkedList::new))

 

String result = givenList.stream()

  .collect(joining()); // "abbcccdd"

String result = givenList.stream()

  .collect(joining(" "));

String result = givenList.stream()

  .collect(joining(" ", "PRE-", "-POST"));

 

 

 

5. stream

long count = list.stream().distinct().count();

for (String string : list) {

    if (string.contains("a")) {

        return true;

    }

}

boolean isExist = list.stream().anyMatch(element -> element.contains("a"));

List<String> resultList

  = list.stream().map(element -> element.toUpperCase()).collect(Collectors.toList());

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值