Java结合框架Set接口与实现类

本文深入讲解了Java中Set集合的概念及应用,包括HashSet和TreeSet的特性与使用方法,并通过实例代码展示了如何进行添加、删除、遍历等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取

Set集合

Set子接口

在这里插入图片描述

Set实现类

在这里插入图片描述
代码演示:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test01 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        //1.add()添加
        set.add("java");
        set.add("python");
        set.add("c++");
        System.out.println("数据个数:" + set.size());
        System.out.println(set.toString());
        //2.remove()删除
        set.remove("c++");
        System.out.println(set.toString());
        //3.遍历
        System.out.println("----------增强for-----------");
        for (String str:set
             ) {
            System.out.println(str);
        }
        System.out.println("----------迭代器-----------");
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //4.判断
        System.out.println(set.contains("java"));
        System.out.println(set.isEmpty());
    }
}

结果:
在这里插入图片描述

HashSet存储方式

重写hashCode和equals方法

package com.ben.qw;

import com.ben.qi.Student;

import java.util.HashSet;
import java.util.Iterator;

/**
 * HashSet的使用
 * 存储结构:哈希表
 * 存储过程:
 * 1.根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空执行第二步
 * 2.再执行equals方法,如果equals方法返回值为true,则认为是重复。否则形成链表
 * */
public class Test02 {
    public static void main(String[] args) {
        HashSet<Student> students = new HashSet<>();
        Student s1 = new Student("www",23);
        Student s2 = new Student("sss",25);
        Student s3 = new Student("aaa",28);
        //1.添加
        students.add(s1);
        students.add(s2);
        students.add(s3);
        System.out.println("元素个数:" + students.size());
        System.out.println(students.toString());
        //2.删除
//        students.remove(s1);
//        System.out.println("删除后元素个数:" + students.size());
        //3.遍历
        System.out.println("----------增强for-----------");
        for (Student s:students
             ) {
            System.out.println(s.toString());
        }
        System.out.println("----------迭代器-----------");
        Iterator<Student> iterator = students.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //4.判断
        System.out.println(students.contains(s1));
        System.out.println(students.isEmpty());
    }
}

代码结果:
在这里插入图片描述

TreeSet

字符串类型

package com.ben.qw;

import java.util.Iterator;
import java.util.TreeSet;

public class Test03 {
    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<>();
        //1.add添加
        treeSet.add("www");
        treeSet.add("sss");
        treeSet.add("aaa");
        System.out.println("元素个数:" + treeSet.size());
        System.out.println(treeSet.toString());
        //2.删除
//        treeSet.remove("www");
//        System.out.println("删除后元素:" + treeSet.size());
        //3.遍历
        System.out.println("---------增强for---------");
        for (String str:treeSet
             ) {
            System.out.println(str);
        }
        System.out.println("---------迭代器---------");
        Iterator<String> iterator = treeSet.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //4.判断
        System.out.println(treeSet.contains("www"));
        System.out.println(treeSet.isEmpty());
    }
}

结果:
在这里插入图片描述
复杂类型:

package com.ben.qw;

import com.ben.qi.Student;

import java.util.Iterator;
import java.util.TreeSet;
/**
 * 使用TreeSet保存数据
 * 存储结构:红黑数
 * 要求:元素必须要实现Comparable接口
 */
public class Test04 {
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>();
        Student s1 = new Student("www",23);
        Student s2 = new Student("sss",24);
        Student s3 = new Student("aaa",26);
        //1.添加
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        System.out.println("元素个数:" + treeSet.size());
        System.out.println(treeSet.toString());
        //2.删除
        treeSet.remove(s1);
        System.out.println("删除后元素个数:" + treeSet.size());
        //3.遍历
        System.out.println("---------增强for---------");
        for (Student stu:treeSet
             ) {
            System.out.println(stu.toString());
        }
        System.out.println("---------迭代器---------");
        Iterator<Student> iterator = treeSet.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //4.判断
        System.out.println(treeSet.contains(s1));
        System.out.println(treeSet.isEmpty());
    }
}

结果:
在这里插入图片描述

Comparator接口
package com.ben.qw;

import com.ben.qi.Student;

import java.util.Comparator;
import java.util.TreeSet;
/**
 * TreeSet集合
 * Comparator:实现定制比较(比较器)
 * */
public class Test05 {
    public static void main(String[] args) {
        TreeSet<Student> treeSet = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int m = o1.getAge() - o2.getAge();
                int n = o1.getName().compareTo(o2.getName());
                return m==0?n:m;
            }
        });
        Student s1 = new Student("www",21);
        Student s2 = new Student("sss",25);
        Student s3 = new Student("aaa",26);
        Student s4 = new Student("ass",26);
        Student s5 = new Student("ass",21);
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        treeSet.add(s4);
        treeSet.add(s5);
        System.out.println(treeSet.toString());
    }
}

结果:
在这里插入图片描述

TreeSet练习
package com.ben.qw;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * 使用TreeSet集合实现字符串按照长度进行排序
 * 利用Comparator接口实现定制比较
 */
public class Test06 {
    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int m = o1.length() - o2.length();
                int n = o1.compareTo(o2);
                return m==0?n:m;
            }
        });
        treeSet.add("sa");
        treeSet.add("wada");
        treeSet.add("apple");
        treeSet.add("sas");
        treeSet.add("hello world");
        treeSet.add("wosi");
        System.out.println(treeSet.toString());
    }
}

结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘵奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值