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

Java中如何提取+号分隔的所有文本内容并存入HashMap

解决方案

实现逻辑

  • 先对输入的原始字符串做预处理,移除所有空格,避免+两侧的空格污染提取结果
  • 使用split()方法按+分割字符串,得到所有产品名称的数组
  • 遍历数组将产品存入HashMap,以下提供两种常用存储逻辑,可根据业务需求选择:
    1. 用自增序号作为key,产品名作为value(适用于需要保留产品顺序的场景)
    2. 用产品名作为key,出现次数作为value(适用于需要统计重名产品的场景)

完整代码示例

import java.util.HashMap;

public class SplitPlusStringToMap {
    public static void main(String[] args) {
        // 示例输入字符串
        String input = "product1 + product2 + product3 + product4 + product5";
        
        // 预处理:移除所有空格
        String processedInput = input.replaceAll("\\s+", "");
        
        // 按+号分割字符串,注意+是正则特殊字符,需要加转义符
        String[] products = processedInput.split("\\+");
        
        // 存储逻辑1:序号为key,产品名为value
        HashMap<Integer, String> productSeqMap = new HashMap<>();
        for (int i = 0; i < products.length; i++) {
            // 可按需添加非空判断,过滤首尾+号产生的空字符串
            if (!products[i].isEmpty()) {
                productSeqMap.put(i, products[i]);
            }
        }
        // 打印验证
        System.out.println("序号为key的存储结果:" + productSeqMap);

        // 存储逻辑2:产品名为key,出现次数为value
        HashMap<String, Integer> productCountMap = new HashMap<>();
        for (String product : products) {
            if (!product.isEmpty()) {
                productCountMap.put(product, productCountMap.getOrDefault(product, 0) + 1);
            }
        }
        // 打印验证
        System.out.println("产品名为key的存储结果:" + productCountMap);
    }
}

输出结果

序号为key的存储结果:{0=product1, 1=product2, 2=product3, 3=product4, 4=product5}
产品名为key的存储结果:{product1=1, product2=1, product3=1, product4=1, product5=1}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:57:02