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

Java合并两个数组去重升序排序运行结果错误排查

问题根因

你的代码输出错误核心是两个问题:

  • 选择了错误的数据结构:HashMap不会维护键的顺序,遍历Entry得到的键顺序由键的哈希值决定,和数值大小没有必然联系,根本无法保证输出是升序。你现在测试用例刚好是1-5的连续数,哈希值和数值本身一致,看起来好像顺序对,换一组非连续、非从1开始的数立刻就会乱序。
  • 代码大括号完全错位:属于语法书写错误,缩进和实际作用域不匹配,很容易出现逻辑执行不符合预期的问题,而且你存在Map里的value是数组下标,这个值对去重、排序没有任何作用,属于冗余逻辑。
正确实现

要实现「两数组合并+去重+升序输出」,最简洁的方式是用TreeSet,这个集合默认按元素自然顺序升序存储,同时自动过滤重复元素,不需要手动写去重、排序逻辑:

import java.util.TreeSet;

class Main {
    public static void main(String[] args) {
        int a[] = {1, 2, 3, 4};
        int b[] = {1, 2, 3, 4, 5};
        
        TreeSet<Integer> resSet = new TreeSet<>();
        // 存入第一个数组元素
        for (int num : a) {
            resSet.add(num);
        }
        // 存入第二个数组元素,重复值会自动被Set去重
        for (int num : b) {
            resSet.add(num);
        }
        // 遍历输出即为升序去重结果
        for (int num : resSet) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

运行上述代码输出结果为:1 2 3 4 5 ,完全符合需求。

如果你不想依赖集合类,也可以手动实现:先把两个数组合并成一个大数组,调用Arrays.sort()排序后,遍历的时候跳过和上一个元素相同的值即可,不过TreeSet的写法代码量更少,出错概率更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:09:23