List map

定义一个List:

List strList = new Array<>();
strList.add(“777”);

定义一个Map

Map map= new HashMap();
map,push(“key”,“value”);

定义一个数组

int arrayint[] = new int[10]//初始化数组大小
arrayint[0]=1;//赋值
不能不给大小

### 关于 `List<Map>` 的使用方法及相关问题 `List<Map>` 是一种常见的集合结构,用于存储一组键值对的列表。以下是对其使用的详细介绍以及一些常见操作的方法。 --- #### 1. **创建并初始化 `List<Map<String, Object>>`** 可以通过以下方式创建和初始化一个 `List<Map<String, Object>>`: ```java // 创建 List<Map> List<Map<String, Object>> listMap = new ArrayList<>(); // 初始化第一个 Map 并加入到 ListMap<String, Object> map1 = new HashMap<>(); map1.put("key1", "value1"); map1.put("key2", 123); listMap.add(map1); // 初始化第二个 Map 并加入到 ListMap<String, Object> map2 = new HashMap<>(); map2.put("key1", "value2"); map2.put("key2", 456); listMap.add(map2); ``` 以上代码展示了如何向 `List<Map<String, Object>>` 添加多个 `Map` 元素[^1]。 --- #### 2. **遍历 `List<Map<String, Object>>`** 可以使用多种方式进行遍历,例如增强型 `for` 循环或者流式处理(Stream API)。下面是两种常用的遍历方式: ##### (1)使用增强型 `for` 循环 ```java for (Map<String, Object> map : listMap) { for (Map.Entry<String, Object> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } ``` ##### (2)使用 Stream API ```java listMap.stream() .flatMap(map -> map.entrySet().stream()) .forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue())); ``` 这两种方法都可以有效地遍历 `List<Map<String, Object>>` 中的所有键值对[^3]。 --- #### 3. **将 `List<Object>` 转换为 `List<Map<String, Object>>`** 如果有一个包含对象的 `List<Object>`,可以通过反射将其转换为 `List<Map<String, Object>>`。这是通过提取对象字段名作为键,字段值作为值来实现的。具体实现如下所示: ```java public List<Map<String, Object>> convertListToObject(List<Object> list) { List<Map<String, Object>> result = new ArrayList<>(); for (Object obj : list) { Map<String, Object> map = new HashMap<>(); // 获取当前对象的所有字段 Class<?> clazz = obj.getClass(); Field[] declaredFields = clazz.getDeclaredFields(); for (Field field : declaredFields) { field.setAccessible(true); // 设置可访问权限 try { map.put(field.getName(), field.get(obj)); } catch (IllegalAccessException e) { e.printStackTrace(); } } // 处理父类字段 Class<?> superClass = clazz.getSuperclass(); while (superClass != null && !superClass.equals(Object.class)) { Field[] superFields = superClass.getDeclaredFields(); for (Field field : superFields) { field.setAccessible(true); try { map.put(field.getName(), field.get(obj)); } catch (IllegalAccessException e) { e.printStackTrace(); } } superClass = superClass.getSuperclass(); } result.add(map); } return result; } ``` 该函数能够递归地获取对象及其父类的所有字段,并将其映射为 `Map<String, Object>` 形式[^1]。 --- #### 4. **字符串与 `Map<String, Object>` 的相互转换** 有时需要将 `Map<String, Object>` 转换为字符串表示形式,反之亦然。这可以通过简单的拼接或解析实现。注意:这种方法仅适用于简单数据结构,复杂嵌套可能无法完全还原。 ##### (1)从 `Map<String, Object>` 转换为字符串 ```java Map<String, Object> map = new HashMap<>(); map.put("name", "Alice"); map.put("age", 25); String str = map.toString(); // 输出 "{name=Alice, age=25}" System.out.println(str); ``` ##### (2)从字符串转换回 `Map<String, Object>` 由于标准库未提供直接反序列化的工具,需手动解析字符串。以下是一个简化版本的实现: ```java import java.util.Map; public static Map<String, Object> parseStringToMap(String input) { Map<String, Object> resultMap = new HashMap<>(); String[] entries = input.substring(1, input.length() - 1).split(", "); for (String entry : entries) { String[] keyValue = entry.split("="); if (keyValue.length == 2) { resultMap.put(keyValue[0].trim(), keyValue[1].trim()); } } return resultMap; } // 测试 String str = "{name=Alice, age=25}"; Map<String, Object> parsedMap = parseStringToMap(str); parsedMap.forEach((k, v) -> System.out.println(k + "=" + v)); ``` 需要注意的是,这种方式不支持复杂的嵌套结构或特殊字符处理[^2]。 --- #### 5. **过滤 `List<Map<String, Object>>`** 利用 Java 8 的 Stream API 可以轻松实现条件过滤。例如筛选出所有年龄大于等于 18 岁的数据项: ```java List<Map<String, Object>> filteredList = listMap.stream() .filter(map -> Integer.parseInt(map.get("age").toString()) >= 18) .collect(Collectors.toList()); filteredList.forEach(System.out::println); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值