java去除反復對象的復雜實例。本站提示廣大學習愛好者:(java去除反復對象的復雜實例)文章只能為提供參考,不一定能成為您想要的結果。以下是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辦法。這是一個很多人都不留意的知識點。
以上就是為大家帶來的java去除反復對象的復雜實例全部內容了,希望大家多多支持~