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

如何将Java去重后打印的数值转换为数组并输出?

解决数组去重后返回数组的问题

首先你的代码有个小问题:循环条件i < n - 1会漏掉数组的最后一个元素,得改成i < n才能处理所有元素。

要实现去重后返回数组,只需要把removeDuplicates方法的返回类型从void改成int[],然后把HashMap里的键转成int数组返回即可。下面是修改后的完整代码:

import java.util.HashMap;
import java.util.Arrays;
import java.util.Scanner;

public class RemoveDuplicates { 
   
   public static void main(String[] args) { 
      
      int[] array = input();
      
      System.out.println("Original Array: " + Arrays.toString(array));
      
      int[] uniqueArray = removeDuplicates(array);
      System.out.println("Array after removing duplicates: " + Arrays.toString(uniqueArray));
      
     } 
     
     // 输入数组的方法
     public static int[] input() { 
      Scanner input = new Scanner(System.in);
      
      System.out.println("请输入数组元素个数: ");
      int size = input.nextInt();
      
      int[] array = new int[size];
      
      System.out.println("请输入" + size + "个元素: ");
      for (int i = 0;i < size; i++) {
         array[i] = input.nextInt();
      }
      
      input.close(); // 记得关闭Scanner
      return array;
     }
     
     // 修改后的去重方法,返回去重后的int数组
     public static int[] removeDuplicates(int[] array) {
         HashMap<Integer, Integer> map = new HashMap<>();
         int n = array.length;
         
         // 修复循环条件,处理所有元素
         for(int i = 0; i < n; i++) {
             if(map.containsKey(array[i])) { 
                 map.put(array[i], map.get(array[i]) + 1);
             } else {
                 map.put(array[i], 1);
             }
         }
         
         // 将HashMap的键转换为int数组
         return map.keySet().stream()
                 .mapToInt(Integer::intValue)
                 .toArray();
     }
}

关键修改点说明:

  • 修复循环条件:把i < n - 1改为i < n,确保数组最后一个元素也被处理。
  • 修改方法返回类型:removeDuplicates方法现在返回int[],而不是直接打印。
  • 转换键为数组:利用Java Stream将HashMap的keySet()(存储所有不重复元素)转换为int数组,也可以用手动遍历的方式:
// 手动遍历转数组的方式
Integer[] tempArray = map.keySet().toArray(new Integer[0]);
int[] uniqueArray = new int[tempArray.length];
for (int i = 0; i < tempArray.length; i++) {
    uniqueArray[i] = tempArray[i];
}
return uniqueArray;
  • main方法接收并打印:接收去重后的数组,用Arrays.toString()直接打印数组内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:05:21