叶存菜鸟笔记之Set及Iterator一般应用和注意点

掌握Set接口和List以及LinkedList接口的不同,其实Colletion接口的补充,唯一不同点就是Set接口
 * 不能存放重复元素。
 * 2.掌握Set接口的子类,HashSet 和 TreeSet ,HashSet和TreeSet接口的不同点。
 * 3.掌握TreeSet的一般应用,其实现了SortedSet接口,因为TreeSet要给自己定义的类进行排序,其注意点是
 * 什么,使用HashSet操作类属性,那么此类必须实现Object的equals()方法和hashCode()方法,类在
 * 实现此两个方法之后,使用HashCode添加属性时便不会产生重复现象
 * 4.掌握Iterator接口输出的注意点,如果是remove 记得用Iterator对象remove ,而不是其它类
 */
import java.util.*;
class Person implements Comparable<Person>{        //实现Comparable 接口  ,Comparable类是范型

//泛型指向的是 要实现Comparable的类名
private String name;
private int age;
public Person(){                     //为了可能项目需要反射功能,构造无参方法
}
public Person(String name,int age){       
this.name=name; 
this.age=age;
}
public String toString(){    //一个标准的类,必须有toString()方法,主要功能输出属性值
return "name   "+this.name+" ; "+"age   "+this.age;
}
public int compareTo(Person per){   //覆写compareTo()方法,此方法在TreeSet里必用,切记
if(this.age>per.age){
return 1;
}else if(this.age<per.age){
return -1;
}else{
return this.name.compareTo(per.name);
}
}
public int hashCode(){            //此方法时避免HashCode会出现重复值,切记 !
return this.name.hashCode()*this.age;
}
public boolean equals(Object obj){       //完整类必覆盖Object类里的equals()方法
if(this==obj){
return true;
}else if(obj==null){
return false;
}else if(!(obj instanceof Person)){
return false;
}
Person p=null;
p=(Person)obj;  //向下转型,还原obj为Person类型
if((p.name==this.name)&&(p.age==this.age)){
return true;
}else{
return false;
}
}
}
public class SetApplication {
      public static void main(String args[]){
     Set<Person> set=new HashSet<Person>();
     set.add(new Person("廖鸡毛",24));
     set.add(new Person("军嫂",26));
     set.add(new Person("廖鸡毛",24));
     Iterator iterator=set.iterator();
     while(iterator.hasNext()){
     System.out.println(iterator.next());
     }
      }
}

你可能感兴趣的:(叶存菜鸟笔记之Set及Iterator一般应用和注意点)