下载此文档

16-Set集合解读.docx


文档分类:幼儿/小学教育 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
Set 集合 1. Set 接口 . Set 接口介绍 Set 接口是 Collection 接口下的一个子接口。它和 List 接口相同, 都是 Collection 的子接口。区别: List :有脚本、可以重复、拥有特有的 ListIterator 迭代器 Set :没有脚本、不能包含重复元素, 没有特有的迭代器,只能使用 Iterator 进行遍历。 2. HashSet 集合 Set 接口没有自己的特有的方法,所有方法全部来自于 Collection 接口。重点学****Set 接口下的两个实现类: HashSet : TreeSet : 此类实现 Set 接口, 由哈希表( 实际上是一个 HashMap 实例) 支持。它不保证 set 的迭代顺序; 特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 HashSet 集合的底层使用的哈希表结构。 . 哈希表介绍如果多个对象它们计算出的哈希值相同, 这时在计算机中称为哈希冲突。如果哈希值相同了, 这时必须调用对象的 equals 方法比较 2个对象( 多个对象)是否是同一个对象。任何给哈希表中存储的对象都应该具备 hashCode 和 equals 方法。/* *演示 HashSet 集合*/ public class HashSetDemo { public static void main(String[] args ){ // 创建集合对象 HashSet set = new HashSet(); // 添加元素 set .add( "bbb" ); set .add( "" ); set .add( "" ); set .add( "abc" ); set .add( "abc" ); // 遍历 HashSet 集合 for ( Iterator it = set .iterator() ; it .hasNext(); ){ System. out .println( it .next()); }}} . HashSet 保存自定义对象/* *演示给 HashSet 中保存自定义类的对象*/ public class HashSetDemo2 { public static void main(String[] args) { // 创建集合对象 HashSet set = new HashSet(); // 创建自定义对象//Person p= new Person(" 华安",23); //(p); ( new Person( "华安" ,23)); ( new Person( "华安" ,23)); ( new Person( "秋香" ,18)); ( new Person( "9527" ,23)); ( new Person( "小书童" ,33)); // 遍历 for ( Iterator it = () ; (); ){ ( () ); }}} 分析: 我们自己定义了一个 Person 类,然后创建 Person 对象,将这些 Person 对象存储到 HashSet 集合中。希望同姓名和年龄的 Person 对象, 应该是同一个人, 在集合中只能有一个。但是通过程序发现依然可以保存多个同姓名和年龄的 Person 对象。 HashSet 集合底层使用的哈希表, 给哈希表中存储对象的时候,需要调用当前对象自己的 hashCode 计算位置, equals 判断对象是否相同。而我们的 Person 类继承了 Object 类,自然就会具备 hashCode 和 equals 方法。但是 Person 类中并没有去复写 hashCode 和 equals 方法,说明在将 Person 对象给 HashSet 集合中保存的时候, 调用的 hashCode 和 equals 方法依然使用的 Object 类中的方法。 Object 类中的 equals 方法是在比较 2个对象的地址值是否相同。 hashCode 方法计算哈希值的是也是根据对象的地址值在进行计算。如果创建了多个 Person 对象,它们的姓名和年龄相同, 我们认为应该是同一个人,但是由于是 new 了多次, 在堆中就会有多个 Person 对象,它们的地址值肯定是不相同的。 . HashSet 保证对象唯一的原因 HashSet 保证对象的唯一依赖当前给 HashSet 集合中保存的对象的 hashCode 和 equals 方法。使用 hashCode 计算位置,使用 equ

16-Set集合解读 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息