21xrx.com
2024-12-22 23:53:50 Sunday
登录
文章检索 我的文章 写文章
Java 数组去重保留首个重复元素
2023-06-23 06:34:08 深夜i     --     --
Java 数组 去重 保留 首个重复元素

Java是一种广泛使用的高级计算机编程语言,其中的数组是程序设计中的基本数据结构之一。在实际开发中,经常会遇到数组中出现重复元素的问题。如何去除重复元素,保留首个重复元素,是程序设计中的一个常见需求。

大多数初学者会使用双重循环来解决这个问题,但是这种方法的时间复杂度是O(n²),执行效率不高。其实Java提供了一种更简单,更实用的方法来去除重复元素并保留首个重复元素——使用HashSet。

HashSet是Java中的一个类,它实现了Set接口,可以保存不重复的元素。将数组中的元素加入到HashSet中,由于HashSet只保存不重复的元素,因此重复的元素将被自动丢弃,只保留首个出现的元素。然后将HashSet中的元素再转换成数组即可。

下面是实现这个过程的Java代码:


public static int[] removeDuplicates(int[] arr) {

  Set<Integer> set = new HashSet<>();

  int[] result = new int[arr.length];

  int index = 0;

  for (int i = 0; i < arr.length; i++) {

    if (set.add(arr[i])) {

      result[index++] = arr[i];

    }

  }

  return Arrays.copyOf(result, index);

}

这个方法的时间复杂度是O(n),执行效率明显提高。

除此之外,还有一种使用Map来实现去重保留首个重复元素的方法。Map中的key不能重复,因此可以将数组中的元素作为key,将其出现的次数作为value。当value为1时,表示该元素只出现了一次,保留;当value大于1时,表示该元素出现了重复,直接丢弃。

下面是使用Map实现去重保留首个重复元素的Java代码:


public static int[] removeDuplicates(int[] arr) {

  Map<Integer, Integer> map = new HashMap<>();

  int[] result = new int[arr.length];

  int index = 0;

  for (int i = 0; i < arr.length; i++) {

    if (map.containsKey(arr[i])) {

      map.put(arr[i], map.get(arr[i]) + 1);

    } else {

      map.put(arr[i], 1);

      result[index++] = arr[i];

    }

  }

  return Arrays.copyOf(result, index);

}

总之,Java中有很多方法可以解决数组去重保留首个重复元素的问题,具体方法的选择需要根据具体情况而定。无论使用哪种方法,都需要注意保证代码的简洁性和效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复