package 集合;

import java.util.ArrayList;
import java.util.Iterator;

/*
 * 删除集合中的重复的元素(元素是对象形式的)
 *
 * List集合判断元素是否相同,依据是元素的equals()方法,其他集合和这个不一样,contains的底层比较原理就是equals。
 *  remove()方法的底层原理也是equals()方法
 * */

class Person{
    String name;
    int age;
    public Person(){}
    public Person(String name,int age){
        this.name = name;
        this.age = 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;
    }

//重写Person的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;
    }
}
    
public class ArrayListTest2 {
    public static void main(String[] args) {
        ArrayList al = new ArrayList();
        al.add(new Person("lisi01",20));
        al.add(new Person("lisi02",20));
        al.add(new Person("lisi03",20));
        al.add(new Person("lisi04",20));
        al.add(new Person("lisi02",20));
        al.add(new Person("lisi03",20));
        
        al =noReplaceElement(al);
        Iterator it = al.iterator();
        while(it.hasNext()){
            Person person = (Person)it.next(); //it.next()返回的是Object类型,必须要强转成Person
            System.out.println(person.getName()+":"+person.getAge());
        }
    }
    
    //定义取出重复元素的方法
    public static ArrayList noReplaceElement(ArrayList al){
        //定义个新的集合容器,接收没有重复的元素
        ArrayList newAl = new ArrayList();
        Iterator it = al.iterator();
        while(it.hasNext()){
            Object obj = it.next();
            if(!newAl.contains(obj)){
                newAl.add(obj);
            }
        }
        return newAl;
    }
}

ArrayList 实现删除重复元素(元素为对象类型)的更多相关文章

  1. ArrayList实现删除重复元素(元素不是对象类型的情况)

    package 集合; import java.util.ArrayList;import java.util.Iterator; /* * 去除ArrayList里面的重复元素 *  * */pub ...

  2. js中 在数组中删除重复的元素(自保留一个)

    例如:var student = [‘qiang’,’ming’,’tao’,’li’,’liang’,’you’,’qiang’,’tao’]; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...

  3. (转)js在数组中删除重复的元素自保留一个(两种实现思路)

    例如:var student = [‘qiang','ming','tao','li','liang','you','qiang','tao']; 第一种思路是:遍历要删除的数组arr, 把元素分别放 ...

  4. js学习笔记之在数组中删除重复的元素自保留一个

    遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 <script type="text/javascript"> ...

  5. 【python】实例-把两个无规则的序列连接成一个序列,并删除重复的元素,新序列按照升序排序

    list_one=[3,6,2,17,7,33,11,7] list_two=[1,2,3,7,4,2,17,33,11] list_new=list_one+list_two list=[] i=0 ...

  6. 获取表单内元素组装成对象类型,方便datagrid的load取参数

    /** * 获取表单数据,并将其转换为对象 */ function getFormObj(formId) { var formObj = {}; var inputs = $('#'+formId). ...

  7. Java删除ArrayList中的重复元素

    Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...

  8. 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素

    用运行速度最优的方法从LinkedList列表里删除重复的元素,例如A->B->BB->B->C,返回A->B->BB->C. 考试的时候没完全想明白,考完又 ...

  9. 用最优方法从LinkedList列表中删除重复元素

    用运行速度最优的方法从LinkedList列表里删除重复的元素,例如A->B->BB->B->C,返回A->B->BB->C. 考试的时候没完全想明白,考完又 ...

随机推荐

  1. tyvj1202 数数食物链

    描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...

  2. UVALive 3027 Corporative Network

    ---恢复内容开始--- Corporative Network Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld ...

  3. inux中fork()函数详解(原创!!实例讲解)

    转载自原创博客,欢迎继续转载 点击跳转到原文

  4. PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

    def a2(arg): if len(arg) > 2: del arg[2:] li = [12,13,14,15] a2(li) print(li)

  5. gdbsever 使用说明

    gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...

  6. ffmpeg-20160908[09,10,13,15,19,21,22,24]-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...

  7. poj1988_Cube Stacking

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 24130   Accepted: 8468 Ca ...

  8. 实现tableview的下拉刷新

    实现tableview的下拉刷新 推荐第三方下拉刷新代码http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6 ...

  9. Linux网络管理1---(Linux配置IP地址,ifconfig、配置文件)

    1.Linux配置IP 地址 ifconfig命令临时配置IP 地址 ifconfig命令,最常用的功能是查看本机的网络的配置状态(当然也可以配置网络,不过是暂时性的),直接输入ifconfig命令就 ...

  10. Linux TOP 交互命令

    今天总结一点top命令的一些交互命令,比较实用! h或者?       显示帮助画面,给出一些简短的命令总结说明 k                          终止一个进程. 系统将提示用户输 ...