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

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935

ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序。在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除重复元素的要求。这篇文章将给出两种从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中的重复元素后,依然保持了元素的插入顺序。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 02:12:29

Java之——删除ArrayList中的重复元素的2种方法的相关文章

Java之——删除ArrayList中的反复元素的2种方法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最经常使用的集合类型之中的一个.它同意灵活加入多个null元素,反复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除反复元素的要求.这篇文章将给出两种从ArrayList中删除反复元素的方法. 方法1:使用HashSet删除ArrayList中反复的元素 在该方法中.我们使用HashSet

删除数组中的重复元素,并返回去重的数组

/*删除数组中的重复元素,并返回去重的数组*/ function delRepeatNum(arr){ var result = []; var middleObj = {}; var temp; for(var i = 0; i < arr.length; i++){ temp = arr[i]; middleObj[temp] = 1; } for(temp in middleObj){ result.push(temp); } return result; }

Python 如何优雅的删除列表中的重复元素

假定有一个需求:需要删除列表中的重复元素,有几种实现方法? 方法一:利用Python 集合的特性 去除重复元素,代码如下: list1 = [1,3,5,7,9,7,4,3,6,1] #将列表强制转换为集合,再转换回列表形式 list1=list(set(list1)) print(list1) 方法二:用一个词形容,腾笼换鸟,代码如下: list1 = [1,3,5,7,9,7,4,3,6,1] list2=[] for i in list1: #遍历list1列表中的元素,如果该元素不在li

js中常用追加元素的几种方法:append,appendTo,after,before,insertAfter,insertBefore,appendChild

js中常用追加元素的几种方法,点击下面每个按钮,即可查看效果 我是第一个子元素 我是第二个子元素 append appendTo prepend prependTo after before appendChild insertAfter insertBefore

javascript 判断数组中的重复内容的两种方法 by FungLeo

javascript 判断数组中的重复内容的两种方法 by FungLeo 前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码:

Js中去除数组中重复元素的4种方法

今天工作遇到此问题,尝试多个方法不尽人意,故此写个博客来总结一下如何在js中去除重复元素. 方法1:         Array.prototype.method1 = function(){             var arr[];    //定义一个临时数组             for(var i = 0; i < this.length; i++){    //循环遍历当前数组                 //判断当前数组下标为i的元素是否已经保存到临时数组          

Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题

该问题有两种方法: 一 利用两个数组,此法简单,不讨论 二 利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历.---但是这种情况要特别注意,当后续元素中有连续的重复元素时,如不加上y--使y(待比较的后续元素)回退一个,很可能会因为我们删掉当前重复元素y后其后的连续重复元素顶上,导致忽略掉顶上的重复元素. 代码如下: 1 public static void main(String[] args) { 2 ArrayList array=ne

去除ArrayList中的重复元素

ArrayList中可以存在重复元素的,若要去除重复元素必须要进行扫描,其实在原理上和数组去除重复元素是一样的. 可以利用contains方法来确定ArrayList中是否存在某个元素. 但是ArrayList中可以放任意的对象,那怎么定义各个对象是否是相同的? 可以通过自己定义类的专属equals方法,定义规则确定某两个对象是否相同,因为contains在判断某个元素是否存在ArrayList中,也是在比较这个元素时候是否和容器中存在的元素相同,若相同则存在,若不相同则不存在,contains

LintCode Python 简单级题目 112.删除链表中的重复元素

题目描述: 给定一个排序链表,删除所有重复的元素每个元素只留下一个. 您在真实的面试中是否遇到过这个题? Yes 样例 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null 标签 链表 题目分析: 给定一个排序链表,删除所有重复的元素每个元素只留下一个. 源码: """ Definition of ListNod