set接口:特点不重复元素,没索引
- 一个不包含重复元素的collection
- set没有索引,set集合取出元素的方式可以采用:迭代器、增强for,没索引
- set接口方法和collection完全一样
HashSet: 无序,不重复,没索引
- 和HashMap是一回事
- 是一个无序集合,即存的顺序和储的顺序不一定相同
- 允许存储null元素
public class HashSetDemo {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("ze");
set.add("qiang");
set.add("qiang");
set.add("liu");
set.add("wang");
Iterator<String> it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println("=========================");
for(String s : set) {
System.out.println(s);
}
}
}
输出: wang liu ze qiang
========================= wang liu ze qiang
HashSet集合自身特点:
底层数据结构:哈希表(链表数组集合体) 查询、增删速度快 线程不安全,运行速度快
桶的数量越多,迭代速度越慢,如果迭代性能重要,初始容量,也就是数组长度不要设置得太高,默认是16,加载因子意思是达到数组长度XX时,进行扩容,扩到两倍以上,通过复制实现,很耗费,默认0.75。扩容的方法叫做数据的再哈希rehash。一般都使用默认。
|