Java中如何提取+号分隔的所有文本内容并存入HashMap
解决方案
实现逻辑
- 先对输入的原始字符串做预处理,移除所有空格,避免
+两侧的空格污染提取结果 - 使用
split()方法按+分割字符串,得到所有产品名称的数组 - 遍历数组将产品存入HashMap,以下提供两种常用存储逻辑,可根据业务需求选择:
- 用自增序号作为key,产品名作为value(适用于需要保留产品顺序的场景)
- 用产品名作为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
相关产品推荐
相关产品推荐

