本章目标
掌握Set接口与Collection接口的关系
掌握Set接口的常用子类:TreeSet、HashSet
掌握TreeSet类的排序实现
掌握Object类中的hashCode()及equals()方法的使用
Set接口的定义
Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素。
Set接口的定义:
——public interface Set<E> extends Collection<E>
Set接口的主要方法与Collection是一致的
Set接口的实例无法像List接口那样进行双向输出
Set接口的常用子类
——散列存放:HashSet
——有序存放:TreeSet
散列的存放:HashSet
HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且是采用散列的存储方式,所以是没有顺序的。
验证HashSet类
import java.util.HashSet;
import java.util.Set;
public class HashSetDemo01 {
public static void main(String[] args) {
Set<String> allSet = new HashSet<String>();
allSet.add("A");//增加元素
allSet.add("B");//增加元素
allSet.add("C");//增加元素
allSet.add("C");//重复元素,不能加入
allSet.add("C");//重复元素,不能加入
allSet.add("D");//增加元素
allSet.add("E");//增加元素
allSet.add("F");//增加元素
System.out.println(allSet);//输出集合对象,调用 toString()
}
/* 结果:
* [D, E, F, A, B, C]
* */
}
有序的存放:TreeSet
如果想对输入的数据进行有序排列,则要使用TreeSet子类。TreeSet类的定义如下:
——public class TreeSet<E> extends AbstractSet<E>implements SortedSet<E>, Cloneable, Serializable
验证TreeSet类
import java.util.Set;
import java.util.TreeSet;
public class TreeSetDemo01 {
public static void main(String[] args) {
Set<String> allSet = new TreeSet<String>();
allSet.add("D");//加入元素
allSet.add("A");//加入元素
allSet.add("E");//加入元素
allSet.add("B");//加入元素
allSet.add("C");//加入元素
allSet.add("C");//重复元素,不能加入
allSet.add("C");//重复元素,不能加入
allSet.add("F");//加入元素
System.out.println(allSet);//输出集合,调用 toString()
}
/* 结果:
* [A, B, C, D, E, F]
* */
}