首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师_<<Set,HashSet>>

2013-10-08 
黑马程序员_Set,HashSet--------------------ASP.NetAndroidIOS开发、.Net培训、期待与您交流! --------

黑马程序员_<<Set,HashSet>>

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


1.Set

       Set是Collection接口的子接口,此集合中不能存放重复元素,对于比较方式是根据他们的底层结构决定的,常见的子类有:HashSet和TreeSet

2.HashSet     1. 概述

     底层是哈希表:哈希值是Object类中哈希方法返回的值,读取此集合中的元素是必须使用迭代器,比较的时候,先是比较的哈希值,如果哈希值相同那么就比较equals方法。

   2. 无序性

    

   



package www.fuxi.jihe; public class Person {  private String name;// 姓名  private int age;// 年龄   public Person(String name, int age) {    super();    this.name = name;    this.age = age;  }   public String getName() {    return name;  }   public int getAge() {    return age;  }   /*   * 重写hashCode()方法,这样的哈希值差不多都很难不一样的   */  public int hashCode() {    int code = this.name.hashCode() + this.age * 56;    System.out.println(this.name + ":"+this.age+"---Code=" + code);    return code;  }   /* equals()方法重写 */  public boolean equals(Object ob) {    if (!(ob instanceof Person)) {      return false;    }     Person p = (Person) ob;    System.out.println(this.getName() + "--equals---" + p.getName());    return this.name.equals(p.name) && this.age == p.age;  }}packagewww.fuxi.jihe;importjava.util.HashSet;importjava.util.Iterator;public classHashSetDemo {      public static void main(String[] args) {           HashSet set = new HashSet();//HashSet对象           set.add(newPerson("zhangsan",21));           set.add(newPerson("lisi",22));// 添加元素           set.add(newPerson("zhangsan",21));                     System.out.println("是否存此对象:"+set.contains(new Person("lisi",22)));            System.out.println("是否存此对象:"+set.contains(newPerson("wangwu",20)));                     System.out.println("移除此对象:"+set.remove(newPerson("zhangsan",21)));      } }结果:zhangsan:21---Code=-1432603380lisi:22---Code=3323235zhangsan:21---Code=-1432603380zhangsan--equals---zhangsanlisi:22---Code=3323235lisi--equals---lisi是否存此对象:truewangwu:20---Code=-795135871是否存此对象:falsezhangsan:21---Code=-1432603380zhangsan--equals---zhangsan移除此对象:true

 

从结果中可以看出也是在判断的时候也是依赖于hashCode()和equals()方法,在这里hashCode()方法设置的比较巧妙,哈希值都不一样,所以没有机会执行equals方法

 

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


热点排行