HashSet集合的特点
.底层数据结构是哈希表
.对集合的迭代顺序不做任何保证,也就是说不保证存储和取出的元素顺序一致
.没有带索引的方法(因为根本没有索引)所以不能使用普通for循环来遍历输出
.由于是set集合的实现类,所以所以不包含重复的元素集合
HashSet集合练习
.存储字符串并遍历
HashSet的源码分析
.存入元素会和以前的元素比较哈希值
.如果哈希值不同,会继续向下执行,把元素添加到集合
.如果哈希值相同,就会调用对象的equals()方法进行比较
.如果返回为false,就会继续向下执行,把元素添加到集合
.如过返回为true,说明元素为重复,不存储
HashSet集合添加元素的过程:也是HashSet集合保证元素唯一性源码分析
- package set集合;
-
- import java.util.HashSet;
- import java.util.Iterator;
-
- public class HashSetDemo {
- /*
- HashSet集合的特点
- .底层数据结构是哈希表
- .对集合的迭代顺序不做任何保证,也就是说不保证存储和取出的元素顺序一致
- .没有带索引的方法(因为根本没有索引)所以不能使用普通for循环来遍历输出
- .由于是set集合的实现类,所以所以不包含重复的元素集合
- HashSet集合练习
- .存储字符串并遍历
- HashSet的源码分析
- .存入元素会和以前的元素比较哈希值
- .如果哈希值不同,会继续向下执行,把元素添加到集合
- .如果哈希值相同,就会调用对象的equals()方法进行比较
- .如果返回为false,就会继续向下执行,把元素添加到集合
- .如过返回为true,说明元素为重复,不存储
- HashSet集合添加元素的过程:
-
- */
-
- public static void main(String[] args) {
- // TODO 自动生成的方法存根
- //创建集合对象
- HashSet<String> hs =new HashSet<String>();
- hs.add("hello");
- hs.add("world");
- hs.add("java");
-
- //迭代器
- Iterator<String> it = hs.iterator();
- while(it.hasNext()) {
- String s = it.next();
- System.out.println(s);
-
- //增强for循环遍历
- for(String s1 : hs) {
- System.out.println(s1);
- }
- }
-
- }
-
- }
-