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

Java中如何去除重复字符串?重复数字序列去重失败求助

Java去除重复字符串并保留顺序与空格的解决方案

嘿,我来帮你搞定这个问题!针对你输入3 3 2 1想要得到3 2 1的需求,我整理了几种实用的Java实现方式,既能去掉重复项、保留原始顺序,还能维持空格分隔的格式:

方法一:使用LinkedHashSet(最直观的顺序去重)

LinkedHashSet是个绝佳选择——它不仅会自动过滤重复元素,还能严格维持元素的插入顺序,完美匹配你的需求。代码示例如下:

import java.util.Arrays;
import java.util.LinkedHashSet;

public class DuplicateRemover {
    public static void main(String[] args) {
        String input = "3 3 2 1";
        // 按空格分割字符串(\\s+能处理多个连续空格的情况,更鲁棒)
        String[] splitParts = input.split("\\s+");
        // 用LinkedHashSet去重并保留顺序
        LinkedHashSet<String> uniqueElements = new LinkedHashSet<>(Arrays.asList(splitParts));
        // 把去重后的元素用空格拼接回字符串
        String output = String.join(" ", uniqueElements);
        System.out.println(output); // 输出结果:3 2 1
    }
}

方法二:用Java Stream API(简洁的一行式实现)

如果你习惯用Java 8及以上的Stream特性,这个方法会更简洁。Stream.distinct()方法对于有序流会保留元素第一次出现的顺序,完全符合要求:

import java.util.Arrays;
import java.util.stream.Collectors;

public class DuplicateRemover {
    public static void main(String[] args) {
        String input = "3 3 2 1";
        String output = Arrays.stream(input.split("\\s+"))
                              .distinct()
                              .collect(Collectors.joining(" "));
        System.out.println(output); // 输出结果:3 2 1
    }
}

方法三:手动遍历去重(适合基础场景)

如果不想依赖集合或Stream,也可以手动遍历数组,自己维护一个不重复的列表:

import java.util.ArrayList;
import java.util.List;

public class DuplicateRemover {
    public static void main(String[] args) {
        String input = "3 3 2 1";
        String[] splitParts = input.split("\\s+");
        List<String> uniqueList = new ArrayList<>();
        
        for (String part : splitParts) {
            // 只添加列表中没有的元素
            if (!uniqueList.contains(part)) {
                uniqueList.add(part);
            }
        }
        
        String output = String.join(" ", uniqueList);
        System.out.println(output); // 输出结果:3 2 1
    }
}

为什么你之前的方法可能没生效?

如果之前尝试的方法失败,大概率是这两个原因:

  • 用了HashSet去重:它不保证元素的顺序,可能会打乱你想要的3 2 1顺序;
  • 分割或拼接时处理不当:比如用了split(" ")但输入里有多个连续空格,导致分割出空字符串;或者拼接时用了错误的分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:37:30