You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从List<Map<String,String>>中提取所有Map键存入字符串数组

从List<Map<String, String>>集合中提取所有Map键存入字符串数组的实现方法

针对你给出的结构,有两种成熟的实现方案,分别适配不同Java版本:

方案1:Java 8+ Stream 简洁实现

利用Stream的flatMap方法打平所有Map的键集合,直接转换为目标字符串数组,支持按需选择是否去重:

List<Map<String, String>> ExcelData = new ArrayList<>();
Map<String,String> excelMap = new HashMap<>(); 
excelMap.put("Flower","lily");
excelMap.put("Fruit","banana");
ExcelData.add(excelMap);

// 提取所有键
String[] allKeys = ExcelData.stream()
        .flatMap(itemMap -> itemMap.keySet().stream())
        .distinct() // 可选配置:如果不同Map存在重复键,加这行自动去重,不需要就删除
        .toArray(String[]::new);

方案2:兼容低版本Java的循环实现

如果使用Java 7及更早版本,直接通过双层遍历收集键即可,逻辑直观无额外依赖:

List<Map<String, String>> ExcelData = new ArrayList<>();
Map<String,String> excelMap = new HashMap<>(); 
excelMap.put("Flower","lily");
excelMap.put("Fruit","banana");
ExcelData.add(excelMap);

// 收集键,用HashSet自动去重,不需要去重可以替换为ArrayList<String>
Set<String> keyCollector = new HashSet<>();
for (Map<String, String> itemMap : ExcelData) {
    keyCollector.addAll(itemMap.keySet());
}
// 转换为字符串数组
String[] allKeys = keyCollector.toArray(new String[0]);

注意事项

  • 不需要去重时,把去重相关的distinct()/HashSet替换为普通List存储即可,最终数组会保留所有重复出现的键
  • 以上代码用你提供的测试数据运行,最终得到的数组内容为["Flower", "Fruit"],符合预期

内容的提问来源于stack exchange,提问作者nithinc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:09:24