ArrayList的contains方法,底层调用了equals方法
2015-10-01 02:01
477 查看
题目:
将自定义对象作为元素存到ArrayList集合中,并去除重复元素
比如:存人对象,同姓名,同年龄,视为同一个人,为重复元素。
将自定义对象作为元素存到ArrayList集合中,并去除重复元素
比如:存人对象,同姓名,同年龄,视为同一个人,为重复元素。
/* 思路 1对人描述,将数据封装进人对象 2定义容器,将人存入 3取出 */ import java.util.*; class Person { private String name; private int age; Person(String name,int age) { this.name= name; this.age= age; } 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 String getName() { return name; } public int getAge() { return age; } } class Test { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add(new Person("lisi01",30)); al.add(new Person("lisi02",35)); al.add(new Person("lisi03",32)); al.add(new Person("lisi02",35)); al.add(new Person("lisi03",32)); al.add(new Person("lisi04",31)); al=singleElement(al); Iterator it = al.iterator(); while (it.hasNext()) { Person p = (Person)it.next(); sop(p.getName()+"---"+p.getAge()); } } public static ArrayList singleElement(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; } public static void sop(Object obj) { System.out.println(obj); } } public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementData[i])) //调用参数的equals方法 return i; } return -1; }
相关文章推荐
- /dev/sr0光驱挂载引起的CPU io_wait升高一“血案”
- /dev/sr0光驱挂载引起的CPU io_wait升高一“血案”
- pip fail with bad md5 hash for package?解决方案(Mac OS 10.10.4)
- HDU 2057 A + B again(十六进制的操作)
- D-S证据理论学习笔记(一)
- LeetCode Climb Stairs
- HDU 1787 GCD Again (欧拉函数)
- TIME_WAIT和CLOSE_WAIT状态区别
- 配置dell的idrac7通过email发送报警
- Spark on yarn Container beyond virtual memory limits
- 设置ip转发提示iptables: No chain/target/match by that name错误的解决方法
- [人工智能实践]爬山法,分支界限法求解皇后问题
- JBoss AS7中的新概念-Domain[master配置domain.xml和host.xml和自己的管理员账号以及用于slave连接验证的账号,slave只需要配置host.xml配置文件即可]
- P22 (*) Create a list containing all integers within a given range
- usaco Drainage Ditches
- @property中retain assign copy详解
- freeswitch语音信箱(Voice Mail)功能调试
- RAID 级别和特征
- Loadrunner:场景运行较长时间后报错:Message id [-17999] was not saved - Auto Log cache is too small to contain the message.
- Loadrunner:error -86401 Failed to connceted xxx.xxx.xxx.xxx:25问题解决