lichangliu1098的gravatar头像
lichangliu1098 2016-11-17 14:57:13

java List去重,list中可以为任意obj,但是obj必须要求重写equals(),建议hashcode()也重写

没事写了个list对字符串去重的方法,后来想想可不可以对其他obj去重,实验后发现也可以,但obj要重写equals()方法,hashcode()不是必须的,但一般对象重写两个方法都最好重写。

package com.po;

public class Student {
	public String name;
	
	public String age;
	
	public String grade;

	public String getName() {
		return name;
	}

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

	public String getAge() {
		return age;
	}

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

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}
	
	@Override
	public int hashCode() {
		int result = 17;
		result = result * 31 + name.hashCode();
		result = result * 31 + age.hashCode();
		result = result * 31 + grade.hashCode();
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		//判断是否是自身
		if(obj == this){
			return true;
		}
	    //判断是否属于Studnet类型
		if(!(obj instanceof Student)){
			return false;
		}
		Student stu = (Student)obj;
		
		return stu.age.equals(this.age)&&stu.getGrade().equals(this.grade)&&stu.getName().equals(this.name);
	}
}



package main;

import java.util.ArrayList;
import java.util.List;

import com.po.Student;

public class Tools {
	
	/**
	 * list去重
	* @Title: listUniqObj
	* @Description: TODO(这里用一句话描述这个方法的作用)
	* @param @param list
	* @param @return 设定文件
	* @return List<T> 返回类型
	* @throws
	 */
	public static <T> List<T> listUniqObj(List<T> list){
		
		if(list!= null && list.size()>0){
			for(int i=0;i<list.size();i++){
				//获取最后一个相同对象的序号
				int j = list.lastIndexOf(list.get(i));
				if(i!=j){
					list.remove(j);
					i--;
				}
			}
		}
		return list;
	}
	
	public static void main(String[] args) {
		
		List<Student> studList=new ArrayList<Student>(); 
		List<Student> newStudList = new ArrayList<Student>();
			for(int i=0;i<500;i++){
				for(int j=0;j<2;j++){
					Student student1 = new Student();
					student1.setAge("11");
					student1.setGrade("11");
					student1.setName("11");
					Student student2 = new Student();
					student2.setAge("22");
					student2.setGrade("22");
					student2.setName("22");
					Student student3 = new Student();
					student3.setAge("33");
					student3.setGrade("33");
					student3.setName("33");
					studList.add(student1); 
					studList.add(student2);  
					studList.add(student3); 
				}
			}
		        
			newStudList = Tools.listUniqObj(studList);
			System.out.println(newStudList.toString());
	}
}

打赏

最代码最近下载分享源代码列表最近下载
最代码最近浏览分享源代码列表最近浏览
cathyZhong  LV2 2020年5月20日
Roy_yu  LV6 2020年4月7日
luohaipeng  LV23 2019年11月18日
suagcf  LV9 2019年5月8日
ywy31415 2019年4月16日
暂无贡献等级
a524460  LV4 2018年10月16日
vijayChen  LV16 2018年7月4日
baggar  LV3 2018年4月10日
li_dashuo 2018年4月3日
暂无贡献等级
qwerqaz123  LV8 2017年11月3日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友