当前位置 博文首页 > Jqcode:List数据去重方法

    Jqcode:List数据去重方法

    作者:[db:作者] 时间:2021-09-16 10:34

    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);
    }
    

    输出结果:

    二、初始化一个新的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对象数据去重

    也可以通过直接转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

    cs
    下一篇:没有了