JAVA_8 Lambda表达式集合相关操作 一些示例

1、集合循环 forEach

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        // 1、第一种
        list.forEach( p -> System.out.println(p));
        System.out.println("=========================================");
        // 2、第一种
        list.forEach( p -> {
            int i = 1;
            System.out.println(i + p);
        });
        // 3、第三种
        System.out.println("=========================================");
        list.forEach( p -> {
            String test = test(1 + p);
            System.out.println(test);
        });
    }

    public static String test(Integer integer) {
        return "测试返回 " + integer;
    }

2、去集合中对象的某一属性最小值

// 过滤得到最小值
Optional<BigDecimal> priceOption = product.stream()
    .filter(product -> product.gePrice() != null)
    .map(Product::getPrice).reduce(BigDecimal::min);

// 当optional值不存在时,调用orElse()返回orElse()的参数,如果optional的值存在时返回optional的值
BigDecimal minPrice = priceOption.orElse(new BigDecimal(0));

3、List根据某一属性进行排序

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(2);
        list.add(3);

        // 正序
        list.sort(Comparator.comparing(Integer::intValue));
        // list.sort((o1, o2) -> o1.intValue() - o2.intValue());
        System.out.println(JSON.toJSONString(list));

        // 倒序
        list.sort(Comparator.comparing(Integer::intValue).reversed());
        System.out.println(JSON.toJSONString(list));
    }

4、list 根据某一对象属性分组

Map<String, List<Product>> map = data.stream().collect(Collectors.groupingBy(Product::getId));

5、list 取出某一属性list,并通过distinct去重

List<String> productIds = list.stream().map(Product::getId).distinct().collect(Collectors.toList())

6、list 转map

// 某一属性Map
Map<String, String> nameMap = products.stream().collect(Collectors.toMap(p -> p.getId(), Product::getName));
// 整个对象Map
Map<String, Product> productMap = products.stream().collect(Collectors.toMap(p -> p.getId(), p -> p));

7、过滤某些数据

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(2);
        list.add(3);

        List<Integer> integerList = list.stream().filter(a -> a >= 3).collect(Collectors.toList());
        System.out.println(integerList);
    }

8、列表数据去重,并保持排序

import com.alibaba.fastjson.JSON;
import lombok.Data;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * @description:
 * @author: shiDong.zou
 * @create: 2021-02-25 15:24
 **/
public class TestMain {

    public static void main(String[] args) {

        User user1 = new User("zhang San", 10);
        User user2 = new User("li Si", 20);
        User user3 = new User("zhang San", 20);
        User user4 = new User("li Si", 20);
        User user5 = new User("wang Wu", 30);
        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);

        //对集合的结果进行去重
        List<User> list = userList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(
                        () -> new TreeSet<>(Comparator.comparing(User::getUserName))
                ), ArrayList::new));
        System.out.println(JSON.toJSONString(list));

        List<User> list2 = userList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(
                        () -> new TreeSet<>(Comparator.comparing(p -> p.getUserName() + ";" + p.getAge()))
                ), ArrayList::new));
        System.out.println(JSON.toJSONString(list2));

    }

}

@Data
class User {

    //用户姓名
    private String userName;

    // 用户年龄
    private Integer age;

    public User(String userName, Integer age) {
        this.userName = userName;
        this.age = age;
    }

}

* 暂时用到的就这些,不全乎的大家可以在评论中补充

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值