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

如何从Map<String,String>的键中提取唯一特定子串?

可以提取,具体实现方式如下

当然可以提取出目标列表,核心思路是处理Map的键(key),提取每个键的前缀部分后去重即可,以下是Java语言的两种实现方式:

方式一:使用Stream API(简洁高效)

import java.util.*;
import java.util.stream.Collectors;

public class ExtractPrefix {
    public static void main(String[] args) {
        Map<String, String> busMap = new HashMap<>();
        busMap.put("BusDetails0.BusDetail.DriverID", "1");
        busMap.put("BusDetails0.BusDetail.DriverSubID", "2");
        busMap.put("BusDetails1.BusDetail.DriverID", "1");
        busMap.put("BusDetails1.BusDetail.DriverSubID", "2");

        List<String> result = busMap.keySet().stream()
                // 按`.`分割字符串,取第一个元素
                .map(key -> key.split("\\.")[0])
                // 去重
                .distinct()
                // 收集为列表
                .collect(Collectors.toList());

        System.out.println(result); // 输出 [BusDetails0, BusDetails1]
    }
}

方式二:普通循环实现(兼容性好)

import java.util.*;

public class ExtractPrefix {
    public static void main(String[] args) {
        Map<String, String> busMap = new HashMap<>();
        busMap.put("BusDetails0.BusDetail.DriverID", "1");
        busMap.put("BusDetails0.BusDetail.DriverSubID", "2");
        busMap.put("BusDetails1.BusDetail.DriverID", "1");
        busMap.put("BusDetails1.BusDetail.DriverSubID", "2");

        Set<String> prefixSet = new HashSet<>();
        for (String key : busMap.keySet()) {
            // 分割字符串,取前缀
            String prefix = key.split("\\.")[0];
            prefixSet.add(prefix);
        }
        // 转成列表
        List<String> result = new ArrayList<>(prefixSet);

        System.out.println(result); // 输出 [BusDetails0, BusDetails1]
    }
}

注意事项

  • 因为.是正则表达式的特殊字符,所以分割时要用\\.转义
  • 使用HashSet或者Stream的distinct()可以自动去重,避免重复添加相同的前缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:37