集合框架:Collection--Set--HashSet类、TreeSet类

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();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值