Java中List去重的四种方法

Java 小智 3111℃ 2评论

Java中List去重的四种方法


package com.lxz.test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * description: List去重
 * date: 2018年2月10日
 * author: www.luxinzhi.com
 */
public class ListRemoveDuplicate {

	// Java中去重的方法有很多,常用的方法主要有下面4种
	// 1. 循环list中的所有元素然后删除重复元素
	@SuppressWarnings("rawtypes")
	public static List removeDuplicate1(List list) {
		for (int i = 0; i < list.size() - 1; i++) {
			for (int j = list.size() - 1; j > i; j--) {
				if (list.get(j).equals(list.get(i))) {
					list.remove(j);
				}
			}
		}
		return list;
	}

	// 2. 通过HashSet踢除重复元素
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List removeDuplicate2(List list) {
		HashSet set = new HashSet(list);
		// 保持原有顺序
		// HashSet set = new LinkedHashSet(list);

		list.addAll(set);
		return list;
	}

	// 3. 删除ArrayList中重复元素,保持原有顺序
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List removeDuplicateWithOrder3(List list) {
		Set set = new HashSet();
		List newList = new ArrayList();
		for (Iterator iter = list.iterator(); iter.hasNext();) {
			Object element = iter.next();
			if (set.add(element)) {
				newList.add(element);
			}
		}
		list.clear();
		list.addAll(newList);
		return list;
	}

	// 4. 把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List removeDuplicate4(List list) {
		List newList = new ArrayList();
		for (int i = 0; i < list.size(); i++) {
			if (!newList.contains(list.get(i))) {
				newList.add(list.get(i));
			}
		}
		return newList;
	}

	@SuppressWarnings("rawtypes")
	public static void main(String[] args) {
		List list = new ArrayList<>();
		list.add("aaa");
		list.add("ccc");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("aaa");

		List list1 = removeDuplicate1(list);
		List list2 = removeDuplicate2(list);
		List list3 = removeDuplicateWithOrder3(list);
		List list4 = removeDuplicate4(list);

		System.out.println("--------1--------");
		for (int i = 0; i < list1.size(); i++) {
			System.out.println(list1.get(i));
		}
		System.out.println("--------2--------");
		for (int i = 0; i < list2.size(); i++) {
			System.out.println(list2.get(i));
		}
		System.out.println("--------3--------");
		for (int i = 0; i < list3.size(); i++) {
			System.out.println(list3.get(i));
		}
		System.out.println("--------4--------");
		for (int i = 0; i < list4.size(); i++) {
			System.out.println(list4.get(i));
		}

	}

}

输出结果


--------1--------
aaa
ccc
bbb
ddd
--------2--------
aaa
ccc
bbb
ddd
--------3--------
aaa
ccc
bbb
ddd
--------4--------
aaa
ccc
bbb
ddd

本文固定链接:心知博客 » Java中List去重的四种方法
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (7)
发表我的评论
取消评论
表情

请填写您的昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 代码高亮用的什么呀
    闵建军2016-12-21 16:19回复