`
zhangjim
  • 浏览: 51471 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java去除LIst中重复元素

阅读更多

Java中的List是有序,而且允许重复的,但有时候我们却不希望它存在重复的元素,那么有什么办法可以去除List里面重复的元素呢?

 

本文提供三种方法去除重复元素:

/**
 * 删除ArrayList中重复元素 
 * @author jimzhang
 */
public class DuplicateRemoval<E> {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("c");
		list.add("a");
		list.add("a");
		list.add("c");
		new DuplicateRemoval().removeDuplicate3(list);
	}

	/**
	 * 循环剔除重复元素 
	 * @param list
	 */
	public void removeDuplicate1(List<E> list) {
		for (int i = 0; i < list.size() - 1; i++) { // i从第一个开始遍历
			for (int j = list.size() - 1; j > i; j--) { // j从最后一个开始遍历
				if (list.get(j).equals(list.get(i))) {
					list.remove(j);
				}
			}
		}
		System.out.println(list);
	}
	
	/**
	 * 通过HashSet剔除(无序)
	 * @param list
	 */
	public void removeDuplicate2(List<E> list) {
		Set<E> set = new HashSet<E>(list); // 通过HashSet去重复
		list.clear(); // 清空原有list
		list.addAll(set);
		System.out.println(list);
	}
	
	/**
	 * 通过HashSet剔除(有序)
	 * @param list
	 */
	public void removeDuplicate3(List<E> list) {
		Set<E> set = new HashSet<E>();
		List<E> newList = new ArrayList<E>(); // 创建一个list维持顺序
		for (int i = 0; i < list.size(); i++) {
			E obj = list.get(i);
			if (set.add(obj)){
				newList.add(obj);
			}
		}
		list.clear();
		list.addAll(newList);
		System.out.println(list);
	}
}

 

注:如果是对象需要用HashSet去重,则要将对象实现equals和hashCode方法。

0
0
分享到:
评论

相关推荐

    去除链表重复元素-Java 实现

    在Java中,去除单链表中的重复元素可以通过使用哈希集合(HashSet)来实现,该集合用于存储已经遍历过的元素。在遍历链表的过程中,我们将每个元素与集合中的元素进行比较,如果发现重复,则删除链表中的该元素。 ...

    在list集合中输入元素,去除重复的元素并输出

    在list集合中输入元素,去除重复的元素并输出 1.使用for i循环去重 2.使用迭代器去重 3.使用HashSet特性去重

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    Java中List集合对象去重及按属性去重的8种方法

    主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下

    Java面试宝典2010版

    65、去掉一个Vector集合中重复的元素 66、Collection 和 Collections的区别。 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 68、你所知道的集合类都有哪些...

    Java面试宝典2020修订版V1.0.1.doc

    25、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 75 26、HashMap与HashTable的区别 75 27、Java中有多少种数据结构,分别是什么? 76 28、Arraylist 和Linkedlist...

    java范例开发大全源代码

     实例64 去除重复元素 88  实例65 数组求和计算 90  实例66 求最大值、最小值和平均值 91  5.2 二维数组 92  实例67 二维数组的创建与使用 92  实例68 矩阵转置 93  实例69 奇数阶幻方 94  ...

    java范例开发大全

    实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例...

    Java范例开发大全 (源程序)

     实例64 去除重复元素 88  实例65 数组求和计算 90  实例66 求最大值、最小值和平均值 91  5.2 二维数组 92  实例67 二维数组的创建与使用 92  实例68 矩阵转置 93  实例69 奇数阶幻方 94  实例70 求...

    Java范例开发大全(全书源程序)

    实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 ...

    java范例开发大全(pdf&源码)

    实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例...

    LeetCode判断字符串是否循环-Leetcode-Java-:Leetcode-Java-

    首先用HashMap遍历一遍数组nums1,Key值储存数组元素,Value(初始值为1)值储存重复元素出现次数,每出现一次加1; b.用List储存nums2中与nums1开始intersection的元素,当遇到map中包含的Key时,才判断对应Value...

    Java Spark算子:distinct

    import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.... * 去除RDD的重复元素。 * */ public class DistinctDemo { public static void main(String[] args) { S

    最新JAVA编程题全集_50题及答案

    import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";//原字符串 List&lt;String&gt; result = list(s, "");//列出字符的组合,放入result System.out....

    黑马入学试题及答案

    * 完成这个例子,请说出java中针对异常的处理机制。 8.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, * 然后打印出这个十进制...

    达内客户端+聊天室源码

    /** 保存所有姓名的集合,因为回帖人中有重复数据,所以这里用Set去除重复 */ Set&lt;String&gt; usersSet = new HashSet(); /** 保存所有回帖内容的集合 */ List&lt;String&gt; texts = new ArrayList(); /* 遍历...

    Oracle9i的init.ora参数中文说明

    这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ...

Global site tag (gtag.js) - Google Analytics