泛型中的<Object>并不是像以前那样有继承关系的,也就是说List<Object>和List<String>是毫无关系的...

本文解析了Java泛型中List&lt;Object&gt;与List&lt;String&gt;的关系,揭示了它们并非传统意义上的继承关系,而是完全独立的类型。

泛型中的<Object>并不是像以前那样有继承关系的,也就是说List<Object>List<String>是毫无关系的

转载于:https://www.cnblogs.com/feicheninfo/p/9679683.html

在 Java 中,从为 `Map<String, Object>` 的 `List` 集合里获取 `id` 为特定值的对象,有以下几种常见方法。 #### 1. 循环遍历列表 通过遍历整个列表,比较每个 `Map` 中 `id` 的值目标 `id`,如果匹配,就返回该 `Map`。示例代码如下: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("id", 1); map1.put("name", "Alice"); list.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("id", 2); map2.put("name", "Bob"); list.add(map2); int targetId = 2; Map<String, Object> result = null; for (Map<String, Object> map : list) { Object idObj = map.get("id"); if (idObj != null && idObj instanceof Integer && (Integer) idObj == targetId) { result = map; break; } } } } ``` #### 2. 使用 Stream API 使用 Java 8 的 Stream API 操作列表,使用 `filter()` 方法筛选出 `id` 为指定值的 `Map`。示例代码如下: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public class Main { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("id", 1); map1.put("name", "Alice"); list.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("id", 2); map2.put("name", "Bob"); list.add(map2); int targetId = 2; Optional<Map<String, Object>> result = list.stream() .filter(map -> { Object idObj = map.get("id"); return idObj != null && idObj instanceof Integer && (Integer) idObj == targetId; }) .findFirst(); if (result.isPresent()) { Map<String, Object> obj = result.get(); } } } ``` #### 3. 使用 Map 存储映射关系 将 `List` 转换为以 `id` 为键,`Map` 为值的 `Map`,这样可以快速根据 `id` 获取对象。示例代码如下: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("id", 1); map1.put("name", "Alice"); list.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("id", 2); map2.put("name", "Bob"); list.add(map2); int targetId = 2; Map<Integer, Map<String, Object>> idMap = new HashMap<>(); for (Map<String, Object> map : list) { Object idObj = map.get("id"); if (idObj != null && idObj instanceof Integer) { idMap.put((Integer) idObj, map); } } Map<String, Object> result = idMap.get(targetId); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值