当前位置: 首页 > 编程笔记 >

2种Java删除ArrayList中的重复元素的方法

穆飞龙
2023-03-14
本文向大家介绍2种Java删除ArrayList中的重复元素的方法,包括了2种Java删除ArrayList中的重复元素的方法的使用技巧和注意事项,需要的朋友参考一下

这篇文章将给出两种从ArrayList中删除重复元素的方法,分别是使用HashSet和LinkedHashSet。

ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序。在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求。

方法1:使用HashSet删除ArrayList中重复的元素

在该方法中,我们使用HashSet来删除重复的元素。如你所知,HashSet不允许有重复的元素。我们使用HashSet的这个属性来删除已建 成的ArrayList中的重复元素。但是,这种方法有一个缺点。那就是,它会删除ArrayList中元素的插入顺序。这意味着,删除重复的元素后,元 素的插入顺序就不对了。先来看下面这个例子。

import java.util.ArrayList;
import java.util.HashSet;
 
public class MainClass
{
 public static void main(String[] args)
 {
 //Constructing An ArrayList
 
 ArrayList<String> listWithDuplicateElements = new ArrayList<String>();
 
 listWithDuplicateElements.add("JAVA");
 
 listWithDuplicateElements.add("J2EE");
 
 listWithDuplicateElements.add("JSP");
 
 listWithDuplicateElements.add("SERVLETS");
 
 listWithDuplicateElements.add("JAVA");
 
 listWithDuplicateElements.add("STRUTS");
 
 listWithDuplicateElements.add("JSP");
 
 //Printing listWithDuplicateElements
 
 System.out.print("ArrayList With Duplicate Elements :");
 
 System.out.println(listWithDuplicateElements);
 
 //Constructing HashSet using listWithDuplicateElements
 
 HashSet<String> set = new HashSet<String>(listWithDuplicateElements);
 
 //Constructing listWithoutDuplicateElements using set
 
 ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set);
 
 //Printing listWithoutDuplicateElements
 
 System.out.print("ArrayList After Removing Duplicate Elements :");
 
 System.out.println(listWithoutDuplicateElements);
 }
}


输出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]
ArrayList After Removing Duplicate Elements :[JAVA, SERVLETS, JSP, J2EE, STRUTS]


注意输出结果。你会发现,在删除重复元素之后,元素重新洗牌。不再按照插入顺序排列。如果你想在删除重复的元素之后依然保持元素的插入顺序,那么不 建议使用此方法。还有另一种方法,可以保证在删除重复的元素之后也不改变元素的插入顺序。那就是使用LinkedHashSet。

方法2:使用LinkedHashSet删除ArrayList中重复的元素

在该方法中,我们使用LinkedHashSet删除ArrayList中重复的元素。正如你知道的,LinkedHashSet不允许重复元素, 同时保持元素的插入顺序。LinkedHashSet的这两个属性可以确保在删除ArrayList中的重复元素之后,依然保持元素的插入顺序。参见下面的例子。

import java.util.ArrayList;
import java.util.LinkedHashSet;
 
public class MainClass
{
 public static void main(String[] args)
 {
 //Constructing An ArrayList
 
 ArrayList<String> listWithDuplicateElements = new ArrayList<String>();
 
 listWithDuplicateElements.add("JAVA");
 
 listWithDuplicateElements.add("J2EE");
 
 listWithDuplicateElements.add("JSP");
 
 listWithDuplicateElements.add("SERVLETS");
 
 listWithDuplicateElements.add("JAVA");
 
 listWithDuplicateElements.add("STRUTS");
 
 listWithDuplicateElements.add("JSP");
 
 //Printing listWithDuplicateElements
 
 System.out.print("ArrayList With Duplicate Elements :");
 
 System.out.println(listWithDuplicateElements);
 
 //Constructing LinkedHashSet using listWithDuplicateElements
 
 LinkedHashSet<String> set = new LinkedHashSet<String>(listWithDuplicateElements);
 
 //Constructing listWithoutDuplicateElements using set
 
 ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set);
 
 //Printing listWithoutDuplicateElements
 
 System.out.print("ArrayList After Removing Duplicate Elements :");
 
 System.out.println(listWithoutDuplicateElements);
 }
}

 输出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]
ArrayList After Removing Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, STRUTS]

注意输出。你可以发现在删除ArrayList中的重复元素后,依然保持了元素的插入顺序。

以上就是本文的全部内容,希望对大家的学习有所帮助。

 类似资料:
  • 问题内容: 我有一个,并且我想从中删除重复的字符串。我怎样才能做到这一点? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加回中: 当然,这破坏了中元素的顺序。

  • 问题内容: 如何从ArrayList中删除重复的元素? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加Set回中ArrayList: 当然,这会破坏中的元素顺序。

  • 问题内容: 谢谢Marko。我重写代码。尝试使其简单。这次它可以真正编译。但它只能删除彼此相邻的重复项。例如,如果我输入1 2 3 3 4 4 5 1,则输出为1 2 3 4 5 1。最后它无法拾取重复项。(顺便说一句:本网站的新内容,如果使任何显示混乱我的歉意) 这是新的代码: 问题答案: 要回答“删除java arraylist中的重复项”问题: 只需将所有元素放到中,就可以完成。 -要么-

  • 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。 例如:[1,2,2,2,3,3,3,3,3]—>[1,2,3] 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 更新此步方法:上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() 然后通过for获取key,得到

  • 本文向大家介绍Java实现删除排序链表中的重复元素的方法,包括了Java实现删除排序链表中的重复元素的方法的使用技巧和注意事项,需要的朋友参考一下 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多

  • 我需要编写一个逻辑来检查一个列表是否有任何重复项,如果有,它会删除它们,并返回一个新的列表,其中包含没有重复/删除的项。下面是我尝试过但没有成功的方法。 Customer.java: 以下是添加后的响应列表: 在上面列出两个具有相同细节的对象的情况下,(即)["id": 123]是重复的。我在所有对象中添加了String(),equals(),hashcode(),并将其传递给hashSet 但我