1. 程式人生 > >java中set類測試總結

java中set類測試總結

public class SetStu {
 /*Set:所有set容器的父介面
  *set的特點:元素不能重複(equals和hashCode一起判斷)
  *HashSet:是依據HashMap來實現的
  *1.元素是無序的(元素排放的順序和我們新增元素的先後順序無關)
  *2.不能儲存重複元素,當新增重複元素的時候,保留之前的元素
  *3.元素判斷是否重複,是通過equals和hashcode同時判斷,所以必須以相同標準同時重寫
  *hashset遍歷的方式:
  *1.由於沒有索引,不能通過索引遍歷
  *2.增強for迴圈可以
  *3.迭代器:(增強for迴圈是基於迭代器設計的)
  *TreeSet:
  *1.元素是必須排序的;
  *2.也不能儲存重複的元素,是根據排序的規則來進行去重的
  *HashSet和TreeSet效率:HashSet效率高
  *
  */
 public static void main(String[] args)
 {
  demo3();
 }
 //HashSet
 public static void demo1(){
  Set<Person> set = new HashSet<Person>();
  intoPerson(set);
  Person per = new Person("老虎",21);
  Person per1 = new Person("老虎",21);
  set.add(per);
  set.add(per1);
  for (Person person : set)
  {
   if(per==person){
    System.out.println("找到了,第一隻老虎");
   }
  }
  System.out.println(set);
 }
 //給容器儲存5個隨機的Person
 public static void intoPerson(Collection<Person> coll){
  String[] name = {"小花","小王","小明","小強","小麗"};
  for (int i = 0; i < 5; i++)
  {
   int age = (int)(Math.random()*(20-10+1))+10;
   coll.add(new Person(name[i],age));
  }
 }
 //hashSet的遍歷
 public static void demo2(){
  Set<Person> set = new HashSet<Person>();
  intoPerson(set);
  //獲取迭代器
  Iterator<Person> ite = set.iterator();
  while(ite.hasNext()){
   System.out.println(ite.next());
  }
 }
 //TreeSet
 public static void demo3(){
  Set<Person> set = new TreeSet<Person>(new Comparator<Person>()
  {