java中set类测试总结

来源:互联网 发布:freebsd rc.d python 编辑:程序博客网 时间:2024/05/22 14:33

import java.util.Collection;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;


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>()
  {
   @Override
   public int compare(Person o1, Person o2)
   {
    if(o1.age<o2.age){
     return 1;
    }else if(o1.age>o2.age){
     return -1;
    }
    return 0;
   }});
  intoPerson(set);
  set.add(new Person("悟空",22));
  set.add(new Person("八戒",22));
  System.out.println(set);
 }
}

一个不错的java项目:JAVA WEB 项目教程-模仿天猫整站 J2EE版