1.set接口
******无序,不可重复
如果equals相等, Hashcode值一定相等;但是Hashcode值相等, equals不一定相等
Hashcode值相同 我们就把它放在一个"桶"内,桶与Hashcode值有关
Hashcode值相同 , equals不相等才能放进桶中
桶越多遍历时间越长
Hashset :加载因子默认 "0.75" 初始容量*加载因子=扩容点(16*0.75=12)-------->以初始容量2倍进行扩容 初始容量:16
*****哈希无序
***************hashSet(数组结构)下面还有一个linkedhashset(链表结构)
2.HashSet(无序,不可重复,允许使用null值)
package com.neusoft.test7
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test7 {
//如果equals相等, Hashcode值一定相等,但是Hashcode相等 equals不一定相等
//Hashcode值相同 我们就把它放在一个"桶"内,桶与Hashcode值有关
//加载因子默认 0.75 初始值*加载因子=扩容点 以初始值2倍进行扩容
public static void main(String[] args) {
// TODO Auto-generated method stub
Set s=new HashSet();//无序,不可重复,允许使用null值
s.add("aaa");
s.add("bbb");
s.add("bbb");
s.add("ddd");
s.add("eee");
s.add("fff");
Iterator i=s.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
3.TreeSet(无序:***输入的顺序和输出的顺序不同, 不可重复)
按照红黑树的树状结构进行排序
*****参数不能为null
*****基于红黑树-------》平衡二叉树,具有颜色
AVL平衡二叉树(平衡因子:右侧减去左侧)
(1)
(2)
(3)
(4)
红黑树
性质1. 节点是红色或黑色。
性质2. 根节点是黑色。
性质3. 每个叶节点(NIL节点,空节点)是黑色的。
性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
(1)
(2)
(3)0、1、2、7、9、11、12
package com.neusoft.test7;
import java.util.Iterator;
import java.util.TreeSet;
public class Test8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet t=new TreeSet();//无序:***输入的顺序和输出的顺序不同 不可重复
t.add(12); //参数不能为null
t.add(1); //基于红黑树------》平衡二叉树,具有颜色
// t.add(null);
t.add(9);
t.add(2);
t.add(0);
t.add(11);
t.add(7);
Iterator i=t.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}