Set简介

定义

public interface Set<E> extends Collection<E> {}

Set是一个继承于Collection的接口,即Set也是集合中的一种。Set是没有重复元素的集合。

SotedSet

接口,排序,自然升序排序的

public static void main(String[] args) {
        // SortedSet
        SortedSet<String> set = new TreeSet<>();
        set.add("cc");
        set.add("aa");
        set.add("bb");
        System.out.println(set);// [aa, bb, cc]
        System.out.println(set.first());//aa
        System.out.println(set.last());//cc
        System.out.println(set.subSet("aa", "cc"));//[aa, bb]
    }

HashSet

哈希表

调用hashCode()

​       equals()判断

顺序:先调用hashCode()算出值,如果hashCode()的值相同了,进一步调用equals()判断是否相同。相同不存储,不相同可以进行链式存储。

 1 import java.util.HashSet;
 2 import java.util.Set;
 3 class Person{
 4     private int no;
 5     private String name;
 6     public Person(int no, String name) {
 7         this.no = no;
 8         this.name = name;
 9     }
10     public int getNo() {
11         return no;
12     }
13     public void setNo(int no) {
14         this.no = no;
15     }
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     @Override
23     public String toString() {
24         // TODO Auto-generated method stub
25         return no+","+name;
26     }
27     @Override
28     public int hashCode() {
29         return name.hashCode()+no;
30     }
31     @Override
32     public boolean equals(Object obj) {
33         //this   
34         //obj
35         Person per = (Person)obj;
36         return this.no == per.no && this.name.equals(per.name) ? true :false;
37     }
38     
39 }
40 public class TestSet1 {
41     public static void main(String[] args) {
42         Set<Person> set = new HashSet<>(); 
43         Person guo = new Person(11, "xiaoguo");
44         Person huang = new Person(11,"xiaoguo");
45         Person yang = new Person(22,"xiaoyang");
46         set.add(guo);
47         set.add(huang);
48         set.add(yang);
49         set.forEach(System.out::println);
50         
51         //Set 
52 /*        Set<String> set = new HashSet<>();
53         set.add("aa");
54         set.add("bb");
55         set.add("cc");
56 //        set.forEach(System.out::println);
57         set.add("aa");
58         set.forEach(System.out::println);*/
59 
60     }
61 
62 }
View Code

相关文章: