Java进阶之旅第二天

这篇具有很好参考价值的文章主要介绍了Java进阶之旅第二天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java进阶之旅第二天

HashMap

特点

  • 1.HashMap是Map的一个实现类
  • 2.直接使用Map里面的方法即可
  • 3.特点都是由键决定的: 无序,不重复,无索引
  • 4.底层和HashSet一样都是哈希表结构
  • 5.核心点
    • HashMap的键位置如果存储的是自定义对象,需要重写hashCode和equals方法
    • 目的: 自定义对象就像自己定义的某个类,由于类中有许多的属性.再加之hashMap的底层是哈希表结构,所以需要重写equals和hashCode方法实现集合中键唯一性

案例:

  • 创建一个HaspMap集合,键是学生对象(Student),值是籍贯
  • 要求: 存储三个键值对元素,并遍历
  • 要求: 同姓名,同年龄认为是一个学生(需要重写函数)
  • 代码
        HashMap<Student, String> map = new HashMap<>();
        Student s1 = new Student("小明", 17);
        map.put(s1,"广东");
        Student s2 = new Student("小成", 20);
        map.put(s2,"广东");
        Student s3 = new Student("小下", 17);
        map.put(s3,"广东");
        Student s4 = new Student("小下", 17);
        map.put(s4,"北京");
        //遍历
        Set<Map.Entry<Student, String>> entries = map.entrySet();
        for (Map.Entry<Student, String> entry : entries) {
            System.out.println(entry.getKey()+" = "+entry.getValue());
        }
        
        //在类中重写的函数
//重写equal和hashCode(快捷键Alt+insert
@Override
public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
        }

@Override
public int hashCode() {
        return Objects.hash(name, age);
        }
  • 结果
Student{name = 小成, age = 20} = 广东
Student{name = 小下, age = 17} = 北京
Student{name = 小明, age = 17} = 广东
  • 分析: 可以看出s3对象被s4对象覆盖了,原因是s3和s4的键值对元素是一致的
  • 不重写函数的结果
Student{name = 小成, age = 20} = 广东
Student{name = 小下, age = 17} = 北京
Student{name = 小明, age = 17} = 广东
Student{name = 小下, age = 17} = 广东
  • 分析: 没有实现题目要求

LinkedHashMap

特点

  • 1.由键决定: 有序,不重复,无索引
  • 2.这里有序的是保证存储和取出的元素顺序是一致的
  • 3.原理: 底层数据结构式哈希表,在基础上添加一个双向链表记录存储的顺序
  • 4.直接使用Map里面的方法即可

代码:

        LinkedHashMap<Integer, Integer> lmap = new LinkedHashMap<>();
        lmap.put(1,1);
        lmap.put(1,9);
        lmap.put(2,1);
        lmap.put(3,1);
        lmap.put(4,1);
        System.out.println(lmap);
  • 结果
{1=9, 2=1, 3=1, 4=1}

文章来源地址https://www.toymoban.com/news/detail-791391.html

到了这里,关于Java进阶之旅第二天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

    上一篇我们的项目搭建好了,也写了简答的Junit测试类进行测试,可以正确映射到数据库中。 那么这篇文章来深入学习一下以下几个点: 了解 MyBatis的核心对象SqlSessionFactoryBuilder 以及它的作用 掌握MyBatis核心配置文件以及元素的使用 。 掌握MyBatis映射文件及其元素的使用 。

    2024年02月11日
    浏览(68)
  • 【Java 进阶篇】Java Web开发:实现验证码功能

    在Web应用程序中,验证码(CAPTCHA)是一种常见的安全工具,用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现,要求用户在登录或注册时输入正确的字符。在这篇文章中,我们将详细介绍如何在Java Web应用程序中实现验证码功能。 验证码是“全自动区分计算机

    2024年02月03日
    浏览(40)
  • 学习JAVA打卡第四十二天

    正则表达式及字符串的替换与分解 ⑴正则表达式 正则表达式是string对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符。  注:由于“   ”代表任何一个字符,所以在正则表达式中如果想使用普通意义的点字符必须使用[.]或5

    2024年02月11日
    浏览(39)
  • 🔥🔥Java开发者的Python快速进修指南:函数进阶

    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。 在Python中,匿名函数

    2024年02月05日
    浏览(57)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象进阶

    在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可

    2024年02月05日
    浏览(61)
  • 【进阶篇】Java 实际开发中积累的几个小技巧(二)

    目录 前言 六、自定义注解 6.1定义注解 6.2切面实现 6.3业务使用 七、抽象类和接口 7.1隔离业务层与 ORM 层 7.2隔离子系统的业务实现 7.3选择对比 文章小结 笔者目前从事一线 Java 开发今年是第 3 个年头了,从 0-1 的 SaaS、PaaS 的项目做过,基于多租户的标准化开发项目也做过,项

    2024年04月16日
    浏览(45)
  • Java后端入职第二天,Git代码提交冲突优雅解决

    现在大部分公司开发基本是使用Git作为版本管理的工具,除非一些比较老或者传统的公司还在使用SVN。Git也有很多平台,包括阿里的codeup,码云,gitlab,以及GitHub,甚至有的还会自己去搭建版本管理平台,但是,最终使用的命令还是Git,所以大家只要熟悉使用git命令即可。本

    2024年02月04日
    浏览(57)
  • 开发语言漫谈-Java

            由于C++过于复杂,Java诞生了。与C++相比,Java更易于学习和使用,它去掉C++中的指针和解决了内存管理问题。Java提供了垃圾自动回收机制,自动管理不再使用的内存。Python又进一步简化,使得语法更简洁,更易于阅读和编写。当然随着简化,性能就越来越低。    

    2024年04月10日
    浏览(49)
  • 初探Java之旅:探寻Java的奥秘

    ✨个人主页:全栈程序猿的CSDN博客 💨系列专栏:Java从入门到精通 ✌座右铭:编码如诗,Bug似流星,持续追求优雅的代码,解决问题如同星辰般自如 在计算机编程的世界中,有一门被誉为“千变万化”的编程语言——Java。作为一名刚刚踏入编程领域的新手,我决定开始我的

    2024年02月05日
    浏览(41)
  • Java反射源码学习之旅

    前段时间组内针对“拷贝实例属性是应该用BeanUtils.copyProperties()还是MapStruct”这个问题进行了一次激烈的battle。支持MapStruct的同学给出了他嫌弃BeanUtils的理由:因为用了反射,所以慢。 这个理由一下子拉回了我遥远的记忆,在我刚开始了解反射这个Java特性的时候,几乎看

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包