您的位置:首页 > 编程语言 > Java开发

java中set类测试总结

2017-12-23 08:22 351 查看
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版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: