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中的重复元素后,依然保持了元素的插入顺序。

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

(0)

相关推荐

  • java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】

    本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示Java正则表达式提取需要的字符并放入数组,即ArrayList数组去重复功能. 具体代码如下: package com.test.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.regex.*; public class MatchTest { public static void ma

  • java集合类arraylist循环中删除特定元素的方法

    在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常: Exception in thread "main" java.lang.I

  • Java中ArrayList去除重复元素(包括字符串和自定义对象)

    1.去除重复字符串 package com.online.msym; import java.util.ArrayList; import java.util.Iterator; @SuppressWarnings({ "rawtypes", "unchecked" }) public class Demo1_ArrayList { public static void main(String[] args) { ArrayList list = new Array

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

    这篇文章将给出两种从ArrayList中删除重复元素的方法,分别是使用HashSet和LinkedHashSet. ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求. 方法1:使用HashSet删除ArrayList中重复的元素 在该方法中,我们使用HashSet来删除重复的元素.如你所知,HashSet不允许有重复的元素.我们使用HashSet的这

  • Java判断List中有无重复元素的方法

    Talk is cheap, show me the code: import java.util.ArrayList; import java.util.HashSet; import java.util.List; /** * 通过简单的代码判断List中是否包含相同元素 * @author wei 2017年7月10日 下午8:34:47 */ public class ListHaveRepeat { public static void main(String[] args) { Li

  • java检查数组是否有重复元素的方法

    本文实例讲述了java检查数组是否有重复元素的方法.分享给大家供大家参考.具体实现方法如下: //判断数组中是否有重复值 public static boolean checkRepeat(String[] array){ Set<String> set = new HashSet<String>(); for(String str : array){ set.add(str); } if(set.size() != array.length){ return false;//有重

  • 根据key删除数组中指定的元素实现方法

    php数组中元素的存在方式是以键值对的方式('key'=>'value'),有时候我们需要根据键删除数组中指定的某个元素. function bykey_reitem($arr, $key){ if(!array_key_exists($key, $arr)){ return $arr; } $keys = array_keys($arr); $index = array_search($key, $keys); if($index !== FALSE){ array_splice($arr,

  • 实例介绍PHP删除数组中的重复元素

    array_unique()函数 array_unique()函数可以移除数组中的重复的值,并返回结果数组:当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除. 代码示例: <?php $result1 = array("a" => "green", "red", "b" => "green", "blue", "red"); var_du

  • Python代码实现删除一个list里面重复元素的方法

    网上学习了的两个新方法,代码非常之简洁.看来,不是只要实现了基本功能就能交差滴,想要真的学好python还有很长的一段路呀 方法一:是利用map的fromkeys来自动过滤重复值,map是基于hash的,大数组的时候应该会比排序快点吧 方法二:是用set(),set是定义集合的,无序,非重复 方法三:是排序后,倒着扫描,遇到已有的元素删之 #!/usr/bin/python #coding=utf-8 ''' Created on 2012-2-22 Q: 给定一个列表,去掉其重复的元素,并输出

  • Java实现删除排序链表中的重复元素的方法

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */

  • Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    本文实例讲述了Java实现删除排序数组中重复元素的方法.分享给大家供大家参考,具体如下: 题目描述: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 一:通过ArrayList解决 时间复杂度和空间复杂度都为O(n) ArrayList<Integer> list = new ArrayList<Integer>(); // 去掉数组中重复的元素 public int r

  • java中删除 数组中的指定元素方法

    java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例子. java的api中,并没有提供删除数组中元素的方法.虽然数组是一个对象,不过并没有提供add().remove()或查找元素的方法.这就是为什么类似ArrayList和HashSet受欢迎的原因. 不过,我们要感谢Apache Commons Utils,我们可以使用这个库的ArrayUtils类来轻易的删除数组中的元素.不过有一点需要注意,数组是在大

  • php删除数组中重复元素的方法

    几种php删除数组元素方法在很多情况下我们的数组会出现重复情况,那我们删除数组中一些重复的内容怎么办,这些元素必须保持他唯一,所以就想办法来删除它们,下面利用了遍历查询来删除重复数组元素的几种方法. 方法一.完整删除重复数组实例-----删除数组中的一个元素 function array_remove_value(&$arr, $var){ foreach ($arr as $key => $value) { if (is_array($value)) { array_remove_valu

随机推荐