import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; public class SetTest01 { public static void main(String[] args) { // 1. 创建一个Set对象 Set<Integer> set = new HashSet<>(); // HashSet特点: 无序,不重复,无索引 set.add(666); set.add(666); set.add(555); set.add(888); set.add(777); set.add(777); System.out.println(set); // [888, 777, 666, 555] Set<Integer> set1 = new LinkedHashSet<>(); // LinkedHashSet特点: 有序,不重复,无索引 set1.add(666); set1.add(666); set1.add(555); set1.add(888); set1.add(777); set1.add(777); System.out.println(set1); // [666, 555, 888, 777] Set<Integer> set2 = new TreeSet<>(); // TreeSet特点: 可排序,不重复,无索引 set2.add(666); set2.add(666); set2.add(555); set2.add(888); set2.add(777); set2.add(777); System.out.println(set2); // [555, 666, 777, 888] 默认升序 } } /* Set无法自动识别两个内容相同的对象, 如果希望 Set认为内容一样的两个对象是重复的, 就需要去类中重写 hashCode和 equals方法 */
/* TreeSet集合对于字符串,默认按照首字母的编号升序排序, 对于自定义类型如 Student对象,TreeSet默认无法直接排序, 通过让自定义的类实现 Comparable接口,重写 CompareTo方法对其排序 (不推荐) 还可以通过调用 TreeSet集合有参数构造器,可以设置 Comparator对象 */