定义:set集合是用来存储数据的,它是一个接口,父类接口是Collection。
特征:无序的,不可重复的。
set接口下有两个实现类:
一个是Hashset: 依靠hash值来存储数据,如果俩个的hash值相同则不再存储
一个是Treeset:底层是二叉树,对存储的数据进行自然排序
1.1 Hashset 类
常用方法:add() addall() remove() removeall() contains() equals() isempty()
package com.qfedu.b_hashSet;
import java.util.HashSet;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
//set集合存储的无序的 不可重复的
set.add("b");
set.add("a");
set.add("d");
set.add("c");
set.add("a");
set.add("ad");
System.out.println(set);
Set<Integer> set1 = new HashSet<>();
set1.add(78);
set1.add(23);
set1.add(100);
set1.add(56);
System.out.println(set1);
set1.remove(23);
//循环
for (Integer integer : set1) {
System.out.println(integer);
}
}
}
1.2 Treeset
一,保证数据的唯一性,存储是无序的
二,如果想要在TreeSet集合中添加对象,则需要实现comparable这个接口和下面的方法
package com.qfedu.c_treeSet;
import java.util.Set;
import java.util.TreeSet;
class Student implements Comparable<Student>{
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student o) {
System.out.println("123");
int num = this.age - o.age;
return num;
}
}
public class Demo2 {
public static void main(String[] args) {
Student stu1 = new Student("小花", 45);
Student stu2 = new Student("老张", 35);
Student stu3 = new Student("鸟", 25);
Student stu4 = new Student("万达", 87);
//按照年龄进行排序 存到TreeSet集合中
Set<Student> set = new TreeSet<>();
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
System.out.println(set);
}
}