java 集合框架-ArrayList存储不重复的自定义对象
2016-05-10 11:17
447 查看
/* 在ArrayList中存储自定义对象 为了实现在ArrayList中存储不重复的对象,需要重写equals方法。remove()方法和contains()方法都会调用equals()方法。 在使用HashSet时,也要在对象类中重写两个方法即,hashCode()和equals()方法。因为HashSet会在底层调用这两个函数。 首先比较HashCode(对象引用或地址),如果相同,再用equals比较对象是否相同。 */ import java.util.*; 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; } public boolean equals(Object obj) //为了比较对象内容,重写equals方法 { if(!(obj instanceof Person)) return false; Person p=(Person)obj; return this.name.equals(p.name) && this.age==p.age; } } class ArrayListTest2 { public static void main(String[] args) { ArrayList al=new ArrayList(); al.add(new Person("Jhon_1",20)); al.add(new Person("Jhon_2",20)); al.add(new Person("Jhon_3",20)); al.add(new Person("Jhon_3",20)); al.add(new Person("Jhon_5",20)); al.add(new Person("Jhon_3",20)); //sop(al); sop(al.remove(new Person("Jhon_5",20))); //底层也是使用equals方法。 al=quchong(al); Iterator it=al.iterator(); while(it.hasNext()) { Object obj=it.next(); Person p=(Person)obj; sop(p.getName()+"..."+p.getAge()); } System.out.println("Hello World!"); } public static ArrayList quchong(ArrayList al) { ArrayList al_des=new ArrayList(); Iterator it=al.iterator(); while(it.hasNext()) { Object obj=it.next(); if(!al_des.contains(obj)) //contains在底层调用了equals。但是这个原始的equals方法是对对象地址进行比较,而不是对对象内容进行比较,所以需要重写。 al_des.add(obj); } return al_des; } public static void sop(Object obj) { System.out.println(obj); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树