Set接口

特点
import java.util.HashSet;
import java.util.Set;
//set集合特点:1.没有索引   2.无序  3.不能存重复元素
public class Demo01 {
    public static void main(String[] args) {
        Set<String> set=new HashSet<>();
        set.add("hello");
        set.add("hello");
        set.add("hi");
        for(String s:set){
            System.out.println(s);//hi  hello
        }
    }
}
Hash表
import java.util.HashSet;
import java.util.Set;
//Hash表  初始容量16  加载因子0.75
public class Demo03 {
    public static void main(String[] args) {
        Set<String> set=new HashSet<>();
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("c");
    }
}
HashSet存储
public class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Person(){}
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    //点出来的  //重写hashCode方法
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }
    //重写equals方法
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
}

存储API类型元素
public class Demo02 {
    public static void main(String[] args) {
        Person p1=new Person();//调用空参
        System.out.println(p1.hashCode());//961
        Person p2=new Person();
        System.out.println(p2.hashCode());//961
        String s1=new String("abc");//构造方法重写
        String s2=new String("abc");
        System.out.println(s1.hashCode());//96354
        System.out.println(s2.hashCode());//96354
    }
}
存储自定义类型元素
import java.util.HashSet;
import java.util.Set;

public class Demo04 {
    public static void main(String[] args) {
        Set<Person> set=new HashSet<Person>();
        set.add(new Person("a",10));
        set.add(new Person("d",11));
        set.add(new Person("c",12));
        set.add(new Person("c",12));
        for(Person p:set){
            System.out.println(p);//Person [name=a, age=10]
        }                          //Person [name=c, age=12]
    }                              //Person [name=d, age=11]
}        
LinkedHashSet
import java.util.ArrayList;
import java.util.LinkedHashSet;
//有序set
public class Demo05 {
    public static void main(String[] args) {
        LinkedHashSet<String> set=new LinkedHashSet<>();
        set.add("hello");
        set.add("hi");
        set.add("lucky");
        for(String s:set){
            System.out.println(s);
        }
  }
}
原文地址:https://www.cnblogs.com/zhaotao11/p/10235573.html