set集合笔记

set子接口

  • 特点:无序、无下标、元素不可重复
  • 方法:全部继承自Collection中的方法

set实现类

HashSet【重点】:

  • 基于HashCode实现元素不重复。
  • 当存入元素的哈希码相同时,会调用equals进行确认,如果为true,则拒绝后者存入。
import java.util.*;

public class SetDemo1 {
    public static void main(String[] args) {
        //创建集合
        Set<String> set = new HashSet<>();
        //1.添加元素 - 从运行结果可以看出:无序、不能重复
        set.add("test1");
        set.add("test3");
        set.add("test2");
        set.add("test2");
        System.out.println("元素个数:" + set.size());
        System.out.println(set.toString());
        //2.删除元素
        set.remove("test2");
        set.remove(new String("test1"));
        System.out.println("元素个数:" + set.size());
        System.out.println(set.toString());

        //3.遍历元素
        set.add("test1");
        set.add("test2");
        System.out.println("--------增强for-------------");
        for (String str:set) {
            System.out.println(str);
        }
        System.out.println("--------使用迭代器-------------");
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

        //4.判断
        System.out.println(set.contains("test1"));
        System.out.println(set.isEmpty());

    }
}

使用new关键字在集合中操作各种属性都相同的引用类型时,由于new出来的对象地址并不相同,导致某些操作的实现并不合理,这里可以使用重写HashCode方法以及equals方法,来判断两个对象是否一致。

具体的存储规则:

  1. 根据hashCode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行第二步。
  2. 再执行equals方法,如果equals方法为true,则认为是重复,否则形成链表。

TreeSet:

  • 基于排列顺序实现元素不重复。
  • 实现了SortedSet接口,对集合元素自动排序。
  • 元素对象的类型必须实现Comparable接口,指定排序规则。
  • 通过CompareTo方法确定是否为重复元素
import java.util.*;

public class setDemo2 {
    public static void main(String[] args) {
        //创建集合
        TreeSet<String> treeSet = new TreeSet<>();
        //1.添加元素 - 会自动排序;元素不重复
        treeSet.add("bcd");
        treeSet.add("abc");
        treeSet.add("cde");
        //treeSet.add("abc");//元素重复则不会添加成功
        System.out.println("元素个数:" + treeSet.size());
        System.out.println(treeSet.toString());

        //2.删除元素
        treeSet.remove("bcd");
        System.out.println("元素个数:" + treeSet.size());
        System.out.println(treeSet.toString());

        //3.遍历
        System.out.println("-------------增强for-----------------");
        for(String str : treeSet){
            System.out.println(str);
        }
        System.out.println("-------------使用迭代器-----------------");
        Iterator<String> it = treeSet.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

        //4.判断
        System.out.println(treeSet.isEmpty());
        System.out.println(treeSet.contains("abc"));
    }
}

如果集合元素拥有多种属性时,treeSet集合会怎么进行排序的呢?

元素必须实现Comparable接口,重写CompareTo,如果返回值为0,则认为是重复元素,设计自己需要的排序规则。

如果没有操作这一步骤,将会在添加元素时就出错。

例如:

//在类中实现Comparable接口
class Person implements Comparable<Person>{
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    //重写compareTo函数
    @Override
    public int compareTo(Person o) {
        //在这里指定比较规则 - 本案例:先按姓名比较,再按年龄比较
        int n1 = this.getName().compareTo(o.getName());
        int n2 = this.getAge() - o.getAge();
        return n1 == 0 ? n2 : n1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值