lambda 表达式从集合中获取某个字段属性的集合

博客围绕lambda表达式展开,介绍其从集合中获取某个字段属性集合的相关内容,在信息技术领域,lambda表达式是一种简洁高效的编程方式,可用于处理集合数据。

 

@Data
public class SchoolBoy {
	private String girlId;
	
	private String id;
	
	private String name;
 
	private String grilName;
}
public class Test3 {

    public static void main(String[] args) {
        List<SchoolBoy> schoolBoys = new ArrayList<>();
        SchoolBoy boy1 = new SchoolBoy();
        boy1.setGirlId("1");
        boy1.setId("10");
        boy1.setName("小明");

        SchoolBoy boy2 = new SchoolBoy();
        boy2.setGirlId("2");
        boy2.setId("11");
        boy2.setName("小豪");

        SchoolBoy boy3 = new SchoolBoy();
        boy3.setGirlId("3");
        boy3.setId("12");
        boy3.setName("小白");
        schoolBoys.add(boy1);
        schoolBoys.add(boy2);
        schoolBoys.add(boy3);

        List<String> ids = schoolBoys.stream().map(schoolBoy -> schoolBoy.getId()).collect(Collectors.toList());
        System.out.println(ids);

        List<String> ids2 = schoolBoys.stream().map(SchoolBoy::getId).collect(Collectors.toList());
        System.out.println(ids2);

    }
}

 

在 Java 中,可以通过 Lambda 表达式结合 `Map` 的方法(如 `computeIfPresent`、`getOrDefault` 或者 `forEach`)来提取指定键的值。以下是一些常见的实现方式: ### 使用 `forEach` 遍历并筛选特定键 如果需要从 `Map` 中遍历并提取某些符合条件的键对应的值,可以使用 `forEach` 方法[^1]: ```java Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); // 提取键为 "B" 的值 map.forEach((key, value) -> { if ("B".equals(key)) { System.out.println("Key: " + key + ", Value: " + value); } }); ``` ### 使用 `getOrDefault` 获取指定键的值 如果已知目标键,可以直接通过 `getOrDefault` 来获取值,并提供一个默认值作为备选[^3]: ```java Integer value = map.getOrDefault("B", 0); // 如果键不存在,则返回默认值 0 System.out.println("Value for key 'B': " + value); ``` ### 使用 `computeIfPresent` 提取并处理特定键的值 如果需要在提取的同时进行一些计算或处理,可以使用 `computeIfPresent` 方法[^4]: ```java map.computeIfPresent("B", (key, oldValue) -> { System.out.println("Found key: " + key + ", Value: " + oldValue); return oldValue; // 返回提取后的值 }); ``` ### 通过 Stream API 提取多个符合条件的键的值 如果希望基于某种条件从 `Map` 中提取多个键的值,可以利用 `Stream` 进行过滤和收集[^2]: ```java List<Integer> values = map.entrySet() .stream() .filter(entry -> entry.getKey().startsWith("A")) // 筛选以 A 开头的键 .map(Map.Entry::getValue) .toList(); System.out.println("Filtered Values: " + values); ``` ### 结合 Lambda 和 Stream 提取键值对的部分信息 如果只需要提取部分字段(例如键或者值),可以进一步简化操作: ```java Set<String> keys = map.keySet() .stream() .filter(key -> key.length() > 1) .collect(Collectors.toSet()); Collection<Integer> valuesWithCondition = map.values() .stream() .filter(value -> value > 1) .collect(Collectors.toList()); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值