黑马程序员技术交流社区
标题:
ArrayList集合去除重复对象的一点疑问
[打印本页]
作者:
15001162522
时间:
2015-10-4 00:14
标题:
ArrayList集合去除重复对象的一点疑问
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo2 {
public static void main(String[] args){
//定义一个ArrayList集合并存入人对象
ArrayList al = new ArrayList();
al.add(new Person("zhangsan",10));
al.add(new Person("lisi",10));
al.add(new Person("zhangsan",10));
al.add(new Person("wangwu",10));
System.out.println("原集合是:"+al);
//去除重复的人对象
al= method(al);
System.out.println("去除重复对象后,集合是:"+al);
}
//定义一个去除重复人对象的方法method
public static ArrayList method(ArrayList al){
ArrayList newal = new ArrayList();//定义一个新集合用于存放不重复元素
Iterator it = al.iterator();//用迭代器遍历集合al
while(it.hasNext()){
Object obj = it.next();
if(!newal.contains(obj))//遍历到的元素未在newal中出现过就将其放进去
newal.add(obj);
}
return newal;
}
}
//定义一个用于描述人对象的类
class Person{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
//复写了Object类中的equals方法,不再比较地址值,按照自己的方式去比较
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}
复制代码
我将method方法单独抽取到一个类中,代码如下:
/*
*需求:自定义人对象,将其存入ArrayList并去除重复对象
*思路:
*1.构造一个用于描述人的类
*2.将人对象存入集合
*3.对集合进行去除重复人对象操作
*/
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo2 {
public static void main(String[] args){
//定义一个ArrayList集合并存入人对象
ArrayList al = new ArrayList();
al.add(new Person("zhangsan",10));
al.add(new Person("lisi",10));
al.add(new Person("zhangsan",10));
al.add(new Person("wangwu",10));
System.out.println("原集合是:"+al);
//去除重复的人对象
al= new Gongju().method(al);
System.out.println("去除重复对象后,集合是:"+al);
}
}
//定义一个用于描述人对象的类
class Person{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
//复写了Object类中的equals方法,不再比较地址值,按照自己的方式去比较
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}
class Gongju{
//定义一个去除重复人对象的方法method
public static ArrayList method(ArrayList al){
ArrayList newal = new ArrayList();//定义一个新集合用于存放不重复元素
Iterator it = al.iterator();//用迭代器遍历集合al
while(it.hasNext()){
Object obj = it.next();
if(!newal.contains(obj))//遍历到的元素未在newal中出现过就将其放进去
newal.add(obj);
}
return newal;
}
}
复制代码
求问,这两种方式有什么不同,开发的时候优先考虑哪个?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2