java 去除重复对象的简单实例
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
下面小编就为大家带来一篇 java 去除重复对象的简单实例小编觉得挺不错的, 现在就分享给大家, 也给大家做个参考一起跟随小编过来看看吧
实例如下:
- 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;
- }
- }
- public class ArrayListTest2 {
- public static void main(String args[]) {
- ArrayList al = new ArrayList();
- al.add(new Person("zhangsan1", 22));
- al.add(new Person("zhangsan2", 33));
- al.add(new Person("zhangsan3", 44));
- al.add(new Person("zhangsan5", 88));
- al.add(new Person("zhangsan4", 55));
- al.add(new Person("zhangsan1", 22));
- //al.add(new Person("zhangsan3",44));
- al = singelElements(al);
- Iterator it1 = al.iterator();
- while (it1.hasNext()) {
- Person p = (Person) it1.next();
- sop(p.getName() + "..." + p.getAge());
- }
- /*Iterator it=al.iterator();
- while(it.hasNext()){
- Person p= (Person)it.next();// 将其强制转化为 person 类型 可以实现后边的输入否则不能调用 getAge()和 getName()方法
- sop(p.getName()+"..."+p.getAge());
- }*/
- }
- public static ArrayList singelElements(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);
- }
- }
解题思路: 创建一个临时容器 ArrayList 来存储不重复的对象通过两次使用迭代器将对象取出从而输入不重复的对象
这里需要注意到在 Person 类中需要定义一个 equals 方法来比较是否有相同的元素其中 instance 的用法是判断对象是否属于该类如果属于则返回 true 否则返回 false.
注意 Java 编程中 ArrayLis 等容器中调用 contains 以及 remove 方法时候都会调用 equals 方法这是一个很多人都不注意的知识点
来源: http://www.phperz.com/article/18/0210/358857.html