天天看点

List数据去重方法

list数据有基本数据,也有list对象,不同的数据类型去重方式也不一样。

List数据去重方法

基本数据类型去重

一、如果list中存放的是基本数据类型,可以使用最简单的方法,直接将list转set。

public static void main(String[] args) {
	List list = new ArrayList();
	list.add("周一");
	list.add("周二");
	list.add("周三");
	list.add("周四");
	list.add("周一");
	System.out.println("去重前的数据:" + list);
	Set set = new HashSet();
	set.addAll(list);
	System.out.println("去重后的数据:" + set);
}
           

输出结果:

List数据去重方法

二、初始化一个新的newList,遍历目标list,如果存在就不做任何操作,不存在就放到这个newList中。

public static void main(String[] args) {
	List list = new ArrayList();
	list.add("周一");
	list.add("周二");
	list.add("周三");
	list.add("周四");
	list.add("周一");
	System.out.println("去重前的数据:" + list);
	List newList = new ArrayList();
	for (Object obj : list) {
		if(newList.contains(obj)) {
			
		}else {
		    newList.add(obj);
		}
	}
	System.out.println("去重后的数据:" + newList);
}
           

输出结果:

List数据去重方法

List对象数据去重

也可以通过直接转set实现去重,但是必须重写equals与hashCode方法。

先放实体类,People.java(注意,这里是重写了equals方法与hashCode方法的,否则直接转Set也不能实现去重)

public class People {

	private String name;

	private Integer age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		People other = (People) obj;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

	public People(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "People [name=" + name + ", age=" + age + "]";
	}
}
           
public static void main(String[] args) {
	List<People> list = new ArrayList<>();
	list.add(new People("小明", 18));
	list.add(new People("小刚", 20));
	list.add(new People("小青", 28));
	list.add(new People("小明", 18));
	System.out.println("去重前的数据:" + list);
	Set<People> peoples = new HashSet<>();
	peoples.addAll(list);
	System.out.println("去重后的数据:" + peoples);
}
           

数据结果:

去重前的数据:[People [name=小明, age=18], People [name=小刚, age=20], People [name=小青, age=28], People [name=小明, age=18]]
去重后的数据:[People [name=小刚, age=20], People [name=小青, age=28], People [name=小明, age=18]]
           

总结,去除的方法有很多,最简单的方法就是直接转Set去重,如果基本数据类型可以直接转,如果是list对象需要在实体中重写equals方法与hashCode方法才能去重。

最后给大家推荐款淘宝京东拼多多购物省钱神器vx:cs588500

List数据去重方法