黑马程序员_集合框架_删除ArrayList中的重复元素

 ------- android培训java培训、java基础学习技术总结、期待与您交流! ----------

        删除ArrayList中重复元素的方法有两种:

        方法一:创建一个新的ArrayList对象,对旧ArrayList对象中的元素进行判断,当新的ArrayList中对象已经存在,则不执行添加。判断对象是否重复的方法的关键在于在元素对象中复写equals方法。

package com.itcast.test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
class Student{
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

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

	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
	public boolean equals(Object obj){
		if(!(obj instanceof Student))
			return false;
		Student stu=(Student)obj;
		return this.name.equals(stu.name)&&this.age==stu.age;
		
	}
	 
}

public class RemoveSame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
		ArrayList<Object> arr=new ArrayList();
		arr.add(new Student("zhangsan",23));
		arr.add(new Student("zhangsan",23));
		arr.add(new Student("lisi",22));
		arr.add(new Student("lisi",22));
		arr.add(new Student("wangwu",22));
	    arr=singleArrayList(arr);	
	    Iterator it=arr.iterator();
	    while(it.hasNext()){
	    	Student stu=(Student)it.next();
	    	System.out.println(stu.getName()+"....."+stu.getAge());  
	    }
	}
	
	public static ArrayList singleArrayList(ArrayList al){
		ArrayList newal=new ArrayList();
		Iterator it1=al.iterator();
		while(it1.hasNext()){
			Object obj=it1.next();
			if(!newal.contains(obj)){
				newal.add(obj);
			}
				
		}
		return newal;
	}

}

     第二种方法:创建一个HashSet对象,将Arraylist中的元素一次放入set中,由于set集合中元素不允许重复,那么重复的元素就不能添加到set中。set中判断元素是否重复的关键在于在元素对象中重写了equals方法和hashCode方法。

package com.itcast.test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
class Student{
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

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

	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
	public boolean equals(Object obj){
		if(!(obj instanceof Student))
			return false;
		Student stu=(Student)obj;
		return this.name.equals(stu.name)&&this.age==stu.age;
		
	}
	public int hashCode(){
		return name.length()+age*38; 
		
	}
	 
}

public class RemoveSame1 {
	public static void main(String[] args){
		ArrayList arr=new ArrayList();
		arr.add(new Student("zhangsan",23));
		arr.add(new Student("zhangsan",23));
		arr.add(new Student("lisi",22));
		arr.add(new Student("lisi",22));
		arr.add(new Student("wangwu",22));
		HashSet set=new HashSet();
		Iterator it=arr.iterator();
		while(it.hasNext()){
			set.add(it.next());
		}
		Iterator it1=set.iterator();
		while(it1.hasNext()){
			Student stu=(Student) it1.next();
			System.out.println(stu.getName()+"...."+stu.getAge());
		}
	}

}

 

 ------- android培训java培训、java基础学习技术总结、期待与您交流! ----------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值