HashSet
//Collection--Set--HashSet
/*
Set:无序,不重复集合
1.向HashSet集合中添加元素时,首先判断是否存在(contains),依据为hashCode和equals,如果不存在添加,否则忽略(不是覆盖)
2.HashSet中可以插入null值,但是只能插入一个
3.HashSet中的元素散列形式的,也就是说,并不知道他们的位置,无法获取元素
4.HashSet不能直接排序,需要借助List来排序
*/
public class DemoA {
//如何产生一个HashSet对象
public static void a(){
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>(set1);
}
public static void b(){//没有get()方法、没有set()修改方法
Set<String> set = new HashSet<>();
set.add("aa");
set.remove("aa");
int size = set.size();
for (String s:set
) {
System.out.print(" "+s);
}
set.clear();
set.isEmpty();//是否是空集合
}
public static void c(){//HashSet要一致:1.hashCode一致 2.equals()一致 contains()先判断hashCode再判断地址(equals)
Set<PersonInfo> set = new HashSet<>();
PersonInfo pi1 = new PersonInfo(1,"张三",23);
PersonInfo pi2 = new PersonInfo(2,"李四",26);
PersonInfo pi3 = new PersonInfo(3,"王五",25);
PersonInfo pi4 = pi3;
PersonInfo pi5 = new PersonInfo(3,"王五",22);
set.add(pi1);
set.add(pi2);
set.add(pi3);
set.add(pi4);
set.add(pi5);
System.out.println(set.size());//4 因为pi4=pi3 Set为无序,不重复集合
List<PersonInfo> list = new ArrayList<PersonInfo>(set);
Collections.sort(list);
System.out.println(list);
}
public static void d(){//
Set<PersonInfo> set = new HashSet<>();
PersonInfo pi1 = new PersonInfo(1,"张三",23);
PersonInfo pi2 = new PersonInfo(2,"李四",26);
set.add(pi1);
set.add(pi2);
System.out.println(set.size());
}//HashSet能放null,但只能放一个
public static void main(String[] args) {
c();
}
}
TreeSet
//Collection--Set---TreeSet
/*
1.TreeSet里面存放的内容必须排序(强制排序)
2.TreeSet就是红黑树,小的放到左子节点,大的放到右子节点
3.TreeSet在存放时,就已经进行了判断,如果compareTo方法返回的是0,就存在
4.TreeSet不能添加null
*/
public class DemoB {
public static void a(){
TreeSet<String> set1 = new TreeSet<>();
TreeSet<String> set2 = new TreeSet<>(set1);
}
public static void b(){
TreeSet<String> set = new TreeSet<>();
set.add("aa");
set.add("bb");
set.add("cc");
// set.remove("aa");
int size = set.size();
//set.clear();
String first = set.first();//得到第一个结点
String last = set.last();//得到最后一个结点
boolean b = set.contains("aa");
// List<String> list = new ArrayList<>(set);
//输出
for (String s:set
) {
System.out.println(s+" ");
}
}
public static void c(){
TreeSet<StuInfo2> set = new TreeSet<>();
StuInfo2 si1 = new StuInfo2(1,"zs",22);
StuInfo2 si2 = new StuInfo2(2,"ls",24);
StuInfo2 si3 = new StuInfo2(3,"ww",25);
StuInfo2 si4 = new StuInfo2(1,"zs",26);
set.add(si1);
set.add(si2);
set.add(si3);
set.add(si4);
System.out.println(set.size());
System.out.println(set);
StuInfo2 si5 = new StuInfo2(1,"sdfs",27);
boolean b = set.contains(si5);
System.out.println(b);
}
public static void main(String[] args) {
c();
}
}
public class StuInfo2 implements Comparable<StuInfo2>{
private Integer id;
private String name;
private Integer age;
public StuInfo2(Integer id,String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "StuInfo{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(StuInfo2 o) {
return this.getAge()-o.getAge();
}
}