Set的介绍,描述

HashSet-->是由HashMap维护的
        无序的,不可重复的
底层结构:哈希表(数组+链表+红黑树)
特点:查询,增删效率较高
            无序,去重
应用场景:存储数据由单个值决定的情况下,想要去重的情况下,适合使用HashSet
新增内容:无新增方法
哈希表中hashcode与equals之间(前提是重写hashcode与equals都是根据
成员变量计算)
equals相等hashcode一定相等
hashcode相等,equals不一定相等
哈希表存储自定义引用数据类型数据的去重:
    需要在数据的类型中重写hashcode与equals方法,实现根据内容
(成员变量的值)进行比较和计算
  HashSet<Person> set = new HashSet<>();
        set.add(new Person("小红",18));
        set.add(new Person("小明",19));
        set.add(new Person("小红",18));
        set.add(new Person("小小彬",17));
        System.out.println(set);
        System.out.println(new Person("小红",18).hashCode());
        System.out.println(new Person("小红",18).hashCode());
    }
}
class Person{
    private String name;
    private int age;
    public Person() {
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
TreeSet-->是由TreeMap维护的
无序,去重
底层结构:红黑树(平衡双叉树)
特点:默认升序排序
新增方法:数据的大小比较相关的方法,因为红黑树结构中数据已经比较过大小,默认升序
使用TreeS存储自定义的引用数据类型,如何是否去重实现默认升序排序
TestSet<Double> tree=new TreeSet<();
tree.add(1.3);
tree.add(1.1);
tree.add(2.2);
tree.add(4.4);
tree.add(5.5);
tree.add(5.5);
System.out.println(tree);
//测试新增的方法
//第一个,一般也是最小的一个
System.out.println(tree.first());
//最后一个,一般是最大的,从大到小排序
System.out.println(tree.last());
System.out.println(tree.ceiling(2.1));
System.out.println(tree.floor(3.3));
TreeSet<String> tree2=new TerrSet<>();
tree2.add("abc");
tree2.add("bc");
tree2.add("a");
tree2.add("bc");
tree2.add("ab");
System.out.println(tree2);
Map<K,V>存储简直数据
元素的集合,键值对的集合
K-V键值对
key-->唯一的,无序的-->Set集合
value-->无序的,可重复的-->Collection
键值对为一个映射关系
key-->映射-->value
一个key只能对应一个value
一个key可以实现对应一个集合作为value,集合中可以存放多个数值
Map<Integer,String> map=new HashMap<>();
System.out.println(map.put(103,"杜甫"));
System.out.println(map.put(101,"杜甫"));
System.out.println(map.put(102,"李白"));
System.out.println(map);
System.out.println(map.put(104,"小白"));
System.out.println(map);
System.out.println(map.containsKey(103));
System.out.println(map.containsKey("胡歌"));
System.out.println(map.get(103));
//不可修改
Map<String,Integer> map2=Map.of("zhangsan",18,"list",19);
System.out.println(map2);
//移除
System.out.println(map.remove(103));
System.out.println(map);
//替换
map.replace(101,"小黑")
System.out.println(map);
HashMap:
        底层:哈希表(数组+链表+红黑树)
        特点:查询,增删效率较高
        新增方法:无新增方法
        遍历方式:与map相同
并且允许null值和null键
DEFAULT_LOAD_FACTOR : 默认的加载因子     0.75
DEFAULT_INITIAL_CAPACITY : 默认初始容量  1<<4 = 16
threshold 扩容临界值 | 阀值  CAPACITY*LOAD_FACTOR
扩容: newCap = oldCap << 1 每次扩容原数组容量的2倍
HashMap<String,Integer> map=new HashMap<>();
//折腾得你的名字加上年龄
map.put("小白",17);
map.put("小黑",15);
map.put("小黄",16);
map.put("小绿",18);
//遍历map
System.out.println(map);
TreeMap:
    根据key实现去重
    底层结构:红黑树
    特点:根据key对数据做升序
    新增功能:比较相关的一些方法
根据key做去重,根据key做排序
要求:key指定比较规则|方式|比较器|排序
    内部比较器
    外部比较器
//根据key默认比较规则,对数据进行升序排序
//TreeMap<Teacher,String> tree = new TreeMap<>();
//根据实参传递的外部比较规则,对key数据进行升序排序
//这个Student是类名,在别的地方调用了
TreeMap<Student,String> tree=new TreeMap<>((t1,t2)->t1.getSubject().compareTo(t2.getSubject()));
tree.put(new Student(113,"小白",18),"java");
tree.put(new Student(117,"小鱼",18),"java");
tree.put(new Student(495,"小龙",18),"java");
tree.put(new Student(385,"小黑",18),"java");
System.out.println(tree);
System.out.println(tree.firstKey());
System.out.println(tree.firstEntry()+"--"+tree.firstEntry().getKey());

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
JSP基于SSM网上医院预约挂号系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值