用 Java 从数组中删除重复项
数组是一个集合,可以存储相似类型的元素,并为其分配固定的内存位置。数组也允许存储重复值。
本文将演示如何以不同的方式在 Java 中有效地从数组中删除重复项。
在 Java 中使用临时数组从数组中删除重复项
在这个方法中,重点是遍历输入数组,然后将原始数组中的唯一元素复制到临时数组中。为此,我们将使用 for
循环和 if
语句。最后,将临时数组中的元素复制到原始数组中,然后将其打印出来。
请参考下面的代码。
public class Main{
public static int remove_Duplicate_Elements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int[] tempA = new int[n];
int j = 0;
for (int i=0; i<n-1; i++){
if (arr[i] != arr[i+1]){
tempA[j++] = arr[i];
}
}
tempA[j++] = arr[n-1];
for (int i=0; i<j; i++){
arr[i] = tempA[i];
}
return j;
}
public static void main (String[] args) {
int arr[] = {56,56,77,78,78,98,98};
int length = arr.length;
length = remove_Duplicate_Elements(arr, length);
for (int i=0; i<length; i++)
System.out.print(arr[i]+" ");
}
}
输出:
56 77 78 98
请注意,我们只能在已排序的数组上实现上述程序。
在 Java 中使用单独的索引从数组中删除重复项
在这里,if
语句用于检查元素是否等于其下一个元素。如果没有,则该特定元素仅添加到该类似数组中的某个索引处。这样做是为了表明在数组中,此特定元素仅添加一次。
此方法也仅适用于数组已排序的情况。
我们在以下代码片段中实现了这一点。
public class Main {
public static int remove_Duplicates(int a[], int n)
{
if (n == 0 || n == 1) {
return n;
}
int j = 0;
for (int i = 0; i < n - 1; i++) {
if (a[i] != a[i + 1]) {
a[j++] = a[i];
}
}
a[j++] = a[n - 1];
return j;
}
public static void main(String[] args)
{
int a[] = { 11, 24, 24, 37, 37, 44, 47, 47, 56, 56};
int n = a.length;
int j=0;
j = remove_Duplicates(a, n);
for (int i = 0; i < j; i++)
System.out.print(a[i] + " ");
}
}
输出:
11 24 37 44 47 56
在 Java 中使用 Arrays.sort()
方法从数组中删除重复项
Arrays.sort()
函数可以在 Java 中对数组进行排序。这种方法不仅用于链表、数组列表等,我们也可以用于原始数据类型。
如果我们使用这种方法,时间和空间复杂度是不固定的。这完全取决于代码的实现。
例如,
import java.util.Arrays;
public class Main{
public static int remove_Duplicate_Elements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int[] tempA = new int[n];
int j = 0;
for (int i=0; i<n-1; i++){
if (arr[i] != arr[i+1]){
tempA[j++] = arr[i];
}
}
tempA[j++] = arr[n-1];
for (int i=0; i<j; i++){
arr[i] = tempA[i];
}
return j;
}
public static void main (String[] args) {
int arr[] = {11,7,2,2,7,8,8,8,3};
Arrays.sort(arr);
int length = arr.length;
length = remove_Duplicate_Elements(arr, length);
for (int i=0; i<length; i++)
System.out.print(arr[i]+" ");
}
}
输出:
2 3 7 8 11
正如所观察到的,未排序数组中的重复元素也以与排序数组相同的方式被删除。但在这里,使用了一种额外的方法对未排序的数组进行排序。
需要注意的是,应该检查数组是否已排序,然后进行下一步删除重复项。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,