Set集合

定义: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);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值