Set 接口继承自 Collection ,Set 没有新增方法,方法和 Collection 保持一致,
Set 容器的特点:无序,不可重复,无序指Set 中的元素没有索引,我们只能遍历查找,不重复指不允许加入重复的元素,更确切的说,新元素如果和Set 中某个元素通过 equals() 方法对比为 true,则不能加入,甚至,Set 中只能放一个 null 元素,不能多个。
Set 常用的实现类:HashSet, TreeSet 等,一般常用 HashSet
HashSet 的源码:底层是一个 HashMap, Set 里面添加的所有元素都作为 HashMap 中的 key, value 统一都为Object, 这就是为什么Set 中元素不能重复的原因(HashMap 中 key 不能重复)
package com.jianshun;
import java.util.HashSet;
import java.util.Set;
/**
*测试HashSet的基本方法
*Set:没有顺序,不可重复
*List: 有顺序,可以重复
* @author Administrator
*
*/
public class TestHashSet {
public static void main(String[] args) {
Set<String> set1 = new HashSet<String>();
set1.add("aa");
set1.add("bb");
set1.add("aa");
System.out.println(set1);
set1.remove("bb");
System.out.println(set1);
Set<String> set2 = new HashSet<String>();
set2.add("高琪");
set2.addAll(set1);
System.out.println(set2);
}
}
// [aa, bb]
// [aa]
// [aa, 高琪]