14.Set集合()

也是一个接口。父接口是collection;

特征:无序的,不可重复的。

它有两个实现类:

HashSet : 依靠hash值进行存储,如果两个hash值一样,就不再存储 。

TreeSet : 底层是二叉树,对存储的数据进行自然排序。

1HashSet类

package com.homework;
import java.util.HashSet;
import java.util.Set;
public class Demo2 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("小白");
        set.add("白");
        set.add("小");
        set.add("小x白");
        System.out.println(set);
        for (String s : set) {
            System.out.println(s);
        }·
    }
}

1.1HashSet类存对象

package com.homework;
import java.util.HashSet;
import java.util.Set;
class Student {
    String name;
    int age;
//有参构造
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //tostring
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo2 {
    public static void main(String[] args) {
      Set<Student> set = new HashSet<>();
      //第一种存法
      set.add(new Student("小白" , 18));
      set.add(new Student("白" , 20));
      set.add(new Student("小" , 19));
      set.add(new Student("小x白" , 108));
      set.add(new Student("小x白" , 108));
      //第二种存法
        Student student = new Student("小黑" , 250);
        set.add(student);
        //无序不可重复
        System.out.println(set);
//        for (Student student1 : set) {
//            System.out.println(student1);
//        }
    }
}

2.TreeSet集合

package com.homework;

import java.util.Set;
import java.util.TreeSet;

public class Demo3 {
    public static void main(String[] args) {
        Set <String> set = new TreeSet<>();
        set.add("小白");
        set.add("白");
        set.add("小");
        set.add("小x白");
        System.out.println(set);
        for (String s : set) {
            System.out.println(s);
        }
    }
}

2.1TreeSet集合存对象存对象时,(需要实现Comparator中的方法(有快捷键))。

package com.homework;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
//第二种方法
class  Animal implements Comparable <Animal>{
    String name;
    int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Animal animal) {
        int num = this.age - animal.age;
        return num;
    }
}
////TreeSet存对象 必须实现 Comparator接口   第一种写法
//class  myClass implements Comparator <Animal> {
//
//    @Override
//    public int compare(Animal o1, Animal o2) {
//        int num = o1.age - o2.age;
//        return num;
//    }
//}
public class Demo3 {
    public static void main(String[] args) {
        //第一种方法
        //Set <Animal> set = new TreeSet<>(new myClass());
        //第二种方法
        Set<Animal> set = new TreeSet<>();
    //第一种
    set.add(new Animal("小白" , 15));
    set.add(new Animal("白" , 20));
    set.add(new Animal("小" , 30));
    set.add(new Animal("小x白" , 50));
    set.add(new Animal("小x白" , 50));
    //第二种
        Animal animal = new Animal("小黑" , 250);
        set.add(animal);
        System.out.println(set);
        //
        for (Animal animal1 : set) {
            System.out.println(animal1);
        }
    }
}
————————

也是一个接口。父接口是collection;

特征:无序的,不可重复的。

它有两个实现类:

HashSet : 依靠hash值进行存储,如果两个hash值一样,就不再存储 。

TreeSet : 底层是二叉树,对存储的数据进行自然排序。

1HashSet类

package com.homework;
import java.util.HashSet;
import java.util.Set;
public class Demo2 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("小白");
        set.add("白");
        set.add("小");
        set.add("小x白");
        System.out.println(set);
        for (String s : set) {
            System.out.println(s);
        }·
    }
}

1.1HashSet类存对象

package com.homework;
import java.util.HashSet;
import java.util.Set;
class Student {
    String name;
    int age;
//有参构造
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //tostring
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo2 {
    public static void main(String[] args) {
      Set<Student> set = new HashSet<>();
      //第一种存法
      set.add(new Student("小白" , 18));
      set.add(new Student("白" , 20));
      set.add(new Student("小" , 19));
      set.add(new Student("小x白" , 108));
      set.add(new Student("小x白" , 108));
      //第二种存法
        Student student = new Student("小黑" , 250);
        set.add(student);
        //无序不可重复
        System.out.println(set);
//        for (Student student1 : set) {
//            System.out.println(student1);
//        }
    }
}

2.TreeSet集合

package com.homework;

import java.util.Set;
import java.util.TreeSet;

public class Demo3 {
    public static void main(String[] args) {
        Set <String> set = new TreeSet<>();
        set.add("小白");
        set.add("白");
        set.add("小");
        set.add("小x白");
        System.out.println(set);
        for (String s : set) {
            System.out.println(s);
        }
    }
}

2.1TreeSet集合存对象存对象时,(需要实现Comparator中的方法(有快捷键))。

package com.homework;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
//第二种方法
class  Animal implements Comparable <Animal>{
    String name;
    int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Animal animal) {
        int num = this.age - animal.age;
        return num;
    }
}
////TreeSet存对象 必须实现 Comparator接口   第一种写法
//class  myClass implements Comparator <Animal> {
//
//    @Override
//    public int compare(Animal o1, Animal o2) {
//        int num = o1.age - o2.age;
//        return num;
//    }
//}
public class Demo3 {
    public static void main(String[] args) {
        //第一种方法
        //Set <Animal> set = new TreeSet<>(new myClass());
        //第二种方法
        Set<Animal> set = new TreeSet<>();
    //第一种
    set.add(new Animal("小白" , 15));
    set.add(new Animal("白" , 20));
    set.add(new Animal("小" , 30));
    set.add(new Animal("小x白" , 50));
    set.add(new Animal("小x白" , 50));
    //第二种
        Animal animal = new Animal("小黑" , 250);
        set.add(animal);
        System.out.println(set);
        //
        for (Animal animal1 : set) {
            System.out.println(animal1);
        }
    }
}