HashSet实现标签去重最轻量可靠:先按[,,s]+切分并trim,再add自动去重;大小写敏感时统一转toLowerCase;最后String.join(", ")拼接。

用 HashSet 实现标签去重非常直接——它天然不重复、无序、查找快,正适合处理用户输入的标签字符串(比如“java, spring, java, mysql” → 去重后得 “java, spring, mysql”)。
把标签字符串拆成集合
先按分隔符(如逗号、空格或中文顿号)切分原始字符串,再逐个加入 HashSet。自动跳过重复项。
String input = "java, spring, java, mysql, Spring";
Set<String> tags = new HashSet<>();
for (String tag : input.split("[,,\s]+")) {
if (!tag.trim().isEmpty()) {
tags.add(tag.trim()); // 自动忽略重复,且去掉首尾空格
}
}
注意大小写敏感问题
默认 HashSet 区分大小写,“Java” 和 “java” 被视为两个不同标签。如需忽略大小写,可用 TreeSet 配合 String.CASE_INSENSITIVE_ORDER,或统一转小写再存:
- 推荐方式:存入前统一转小写,查询/显示时再按需还原(如首字母大写)
- 示例:
tags.add(tag.trim().toLowerCase()) - 若需保留原始格式但去重逻辑忽略大小写,可额外维护一个
Map<string string></string>记录首次出现的原样标签
转回字符串输出
去重完成后,常需拼成逗号分隔的字符串返回给前端或日志。用 String.join 最简洁:
立即学习“Java免费学习笔记(深入)”;
String result = String.join(", ", tags); // 如 "spring, java, mysql"
// 若需固定顺序(如按字母),可转为 TreeSet 或排序后的 ArrayList
进阶:支持添加/删除单个标签
如果业务需要动态增删(比如编辑标签),直接操作 HashSet 即可:
-
tags.add("redis")—— 重复添加无效,安全 -
tags.remove("java")—— 删除指定标签 -
tags.contains("spring")—— 快速判断是否存在
不复杂但容易忽略细节:空字符串、空白符、大小写、分隔符多样性。只要预处理到位,HashSet 就是最轻量可靠的去重方案。


















