Set简介
定义
public interface Set<E> extends Collection<E> {}
Set是一个继承于Collection的接口,即Set也是集合中的一种。Set是没有重复元素的集合。
接口,排序,自然升序排序的
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] }
哈希表
调用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 }