1. 程式人生 > >集合框架之ArrayList存入物件的練習

集合框架之ArrayList存入物件的練習

package myclass; import java.util.; / 將自定義物件作為元素存到ArrayList集合中,並去除重複元素。 比如:存人物件,同姓名同年齡,視為同一個人,為重複元素

思路: 1.對人描述,將資料封裝進人物件中 2.定義容器,將人存入 3.取出來

List 集合判斷元素是否相同,依據的事equals()方法。(contains()he remove()) */

class Person { private String name; private int age; Person(String name,int age )//一初始化姓名和年齡就全來了 { this.name

= name; this.age = age; } public boolean equals(Object obj) //equals()方法在底層自動被呼叫。 //為什麼定義在Person類中,而不是在主函式中。 { if(!(obj instanceof Person)) return false; Person p = (Person)obj; return this.name.equals(p.name) && this.age == p.age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }

class ArrayListTest2 { public static void main(String[] args) { ArrayList al = new ArrayList();//判斷物件是否相同equals()方法比較地址值 al.add(new Person(“lisi”,30)); // al.add(Object obj) = new Person(); al.add(new Person(“lisi1”,31)); al.add(new Person(“lisi1”,31)); al.add(new Person(“lisi2”,32)); al.add(new Person(“lisi3”,33));

     // sop(al);//這裡打印出來的是地址值。

      al = singleElement(al);

     //Iterator就已經將陣列中的元素取出並且列印。
      Iterator it = al.iterator();

      while(it.hasNext())
      {
            Object obj = it.next();//it.next()返回值是Object型別。需要進行強制轉換  1.
             Person p = (Person)obj;
           sop(p.getName()+ "::" + p.getAge());
           //sop(it.hanNext().getName()+ "::" + it.hasNext().getAge());//不能用
       }

  }
  public static ArrayList singleElement(ArrayList al)
   {
        ArrayList nAl = new ArrayList();
   
        Iterator it = al.iterator();
     
         while(it.hasNext())
         {
              Object obj = it.next();
              if(!nAl.contains(obj))//呼叫contains 然後contains在底層呼叫equals
                   nAl.add(obj);
          }
         return nAl;
   }
   public static void sop(Object obj)
   {
         System.out.println(obj);
     }

}