17-4:ArrayList的contains/remove对对象操作关联equals的详解
来源:互联网 发布:java 漏洞 编辑:程序博客网 时间:2024/06/05 16:29
package test;import java.util.ArrayList;import java.util.Iterator;class Person {private String name;private int age;public Person() {super();}public Person(String name, int age) {super();this.name = name;this.age = age;}//@Override//public int hashCode() {////System.out.println(this+".......hashCode");////return name.hashCode()+age*27;////return 100;//}//重写equals方法,否则无法实现在集合的对象中排除重复的对象,如果是字符串就可以不用写这个//@Override//public boolean equals(Object obj) {////if(this == obj)//return true;////健壮性判断//if(!(obj instanceof Person))//throw new ClassCastException("类型错误");//////System.out.println(this+"....equals....."+obj);//Person p = (Person)obj;//return this.name.equals(p.name) && this.age == p.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 String toString(){return name+":"+age;}//@Override//public int compareTo(Object o) {////Person p = (Person)o;////int temp = this.age-p.age;//return temp==0?this.name.compareTo(p.name):temp;//////int temp = this.name.compareTo(p.name);////return temp==0?this.age-p.age:temp;/////*//if(this.age>p.age)//return 1;//if(this.age<p.age)//return -1;////else{////return this.name.compareTo(p.name);//}//*/////}}public class Test {public static void main(String []args){ArrayList al = new ArrayList();al.add("a1");al.add("a2");al.add("a1");al.add("a2");al.add("a3");al.add("a4");System.out.println(al);//输出ArrayList中不含重复的元素al = getSingleElement(al);System.out.println(al); ArrayList al2 = new ArrayList();al2.add(new Person("lisi1",21));al2.add(new Person("lisi2",22));al2.add(new Person("lisi3",23));al2.add(new Person("lisi4",24));al2.add(new Person("lisi2",22));al2.add(new Person("lisi3",23));//重写Person中的toString方法,自定义输出格式,否则输出类名及属性地址System.out.println(al2);al2 = getSingleElement(al2);//System.out.println(al.remove(new Person("lisi2",22)));System.out.println(al2);//ArrayList al = new ArrayList();//al.add(new Person("p1",21));//al.add(new Person("p2",22));//al.add(new Person("p2",23));//al.add(new Person("p4",24));//al.add(new Person("p2",25));////System.out.println();//System.out.println(al);//al = getSingleElement(al);//System.out.println(al); }private static ArrayList getSingleElement(ArrayList al) {ArrayList temp = new ArrayList();Iterator it = al.iterator();while(it.hasNext()){Object obj = it.next();//3,判断被迭代到的元素是否在临时容器存在//contains中依靠equals这个方法if(!temp.contains(obj)){temp.add(obj);}}return temp;}}
ArrayList的contains/remove方法对字符串操作的时候,不用重写equals,但是对对象操作时,需要重写equals
原因在于,需要比较内容,也就是要重写equals中比较具体对象的属性对比的方法
- 17-4:ArrayList的contains/remove对对象操作关联equals的详解
- Redis对对象的操作
- 对对象的简单操作
- 对对象的理解
- Java对对象的4种引用
- 对对象的操作一定要以引用的方式传递
- STL对对象的排序
- Hibernate对对象的管理
- JavaScript的prototype对对象
- Spring对对象的维护
- 使用反射和内省对对象的操作
- C++ STL list对对象变量操作的一些总结
- Java语言对对象引用的4种方式
- Java语言对对象引用的4种方式
- Java语言对对象引用的4种方式
- ArrayList的contains方法,底层调用了equals方法
- 数据结构之解析ArrayList源码的add,remove,set,contains
- struts2对对象的强大支持
- 什么是 HBBTV
- bigdecimal
- C语言位操作技巧
- asp.net 框架页刷新时如何保留之前的页面
- jquery 学习
- 17-4:ArrayList的contains/remove对对象操作关联equals的详解
- Android activity launch mode
- Android中如何修改系统信息(应用程序获得系统权限)
- Oracle 分组汇总
- Android OpenGL ES 分析与实践
- mysql日期时间函数(很好)
- PhysX流体笔记
- 五 SIP中一个INVITE消息的发起过程
- 深入浅出编译原理-4-一个简单词法分析器的C语言实现