- 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;
- }
- }
复制代码
求问,这两种方式有什么不同,开发的时候优先考虑哪个? |
|