首页 > 其他分享 >m1_day13

m1_day13

时间:2024-05-10 23:30:51浏览次数:16  
标签:obj List Object 数据类型 equals m1 day13 集合

课程内容:
  • Object类的核心方法

  • 集合框架

  • 集合之ArrayList集合


Object类的核心方法:
  • Object是Java中的鼻祖类 所有类的直接父类/间接父类

  • toString():制定一个对象打印显示的内容

    • 任何一个引用数据类型都默认继承Object类 获得toString()方法 在Object类中toString()

      Object类中的toString():
      public String toString(){
      return this.getClass().getName()+"@"+哈希码值十六进制
      }
    • 如果我们对Object类继承得到的toString()不满意的话 可以自行覆盖 覆盖时需要注意:public String toString(){}不能修改

  • equals():制定一个类型的比较规则 当什么属性一样的话 将两个对象视为相等对象 判断两个对象能不能视为相等对象

    • 任何一个引用数据类型都继承Object获得equals() 在Object类equals()

      public boolean equals(Object obj){
      return this == obj;//比较地址
      }
    • 如果我们对继承得到的equals()比较规则不满的话 需要自己覆盖equals()

      public boolean equals(Object obj){
      if(obj == null)return false;
      if(!(obj instanceof 当前类型))return false;
      if(obj == this)return true;
      return ...;
      }
    • 面试题:==和equals()之间的区别?

      • ==:是一个运算符 判断左右两边的值是否相等

        • 基本数据类型:比较数值

        • 引用数据类型:比较地址

      • equals():是Object类中的一个方法 判断两个对象能不能视为相等对象 程序员可以按照自己的意愿 将内存里面不同的两个对象视为相等对象 比如:String类型只要两个字符串内容一样视为相等对象

  • hashCode():生成一个对象的散列特征码

    • 散列:将一大组数据分散为不同的小组

    • 注意:当此方法[equals]被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。 -> x.equals(y) = true -> x.hashCode() = y.hashCode()

    • 任何一个引用数据类型都继承Object 获得hashCode() 在Object类中hashCode()通过地址生成哈希码值 如果对Object类中的方法不满意的话 可以覆盖:

      public int hashCode(){
      return 基本数据类型 + 引用数据类型.hashCode();
      }

集合:容器 负责存储元素 集合在创建对象的时候 不需要明确空间 但是可以存储无数个元素
数组:容器 负责存储元素 数组在创建对象的时候 需要明确空间大小
集合框架
                                            JCF:java Collections FrameWork
java集合框架

Collection Map
[单值类型的集合] [键值对类型的集合]

List Set SortedMap
[有序] [无序]
[不唯一]     [唯一]
SortedSet
[有序]
[唯一]
场景一:拿一个集合 存储班级里面每个学生的信息 按照分数降序排序-》sortedSet
场景二:图书馆管理系统 记录哪一个学生借了拿一本书 -》Map
场景三:拿一个集合 存储每一桌客人点的菜品 按照凉菜 热菜 汤 主食上菜-》List
场景四:大润发超市系统 底层拿着一个容器存储所有的会员信息 -》 Set
  • 单值类型的集合?

    • 每次往集合里面添加一个元素 -> 集合 -》 存储大量常见的单词

    • apple orange animal...

  • 键值对类型的集合?

    • 每次往集合里面添加一对元素 key[主键]=value[值]

    • 金山词霸 -》 集合 -》 存储大量常见中英文 -》 apple=苹果

      • apple=苹果

      • animal=动物

  • 面试题:List Set Map属于同一个等级吗?

    • List Set属于Collection子接口

    • Collection和Map属于同一个等级


List接口:
  • ArrayList集合
    • 特点:有序 不唯一

    • 数据结构:数组

  • ArrayList0:包装类
    • 作用一:由于ArrayList底层基于Object[]实现的 所以只能存储引用数据类型 不能存储基本数据类型 为了保证集合里面也可以存储基本数据类型 -》 包装类

    • 作用二:包装类里面提供一个方法parseXXX() 可以将字符串转换成对应的基本数据类型

    • Integer类会自动缓存-128到127之间所有的数字

  • Vector

  • LinkedList

  • Stack

//单值集合统一的父接口
interface Collection{
//接口中一般定义抽象方法
定义的是List/Set都可以使用的方法
boolean add(Object obj);//集合会添加
boolean remove(Object obj);//通过元素删除
...
}

interface List extends Collection{
//add() remove()
补充List集合才能使用的方法
boolean remove(int index);//通过下标删除
boolean add(int index,Object obj);//插入元素
...
}

//ArrayList其实就是一个包装好的数组
class ArrayList implements List{
//当一个类实现一个接口的时候 需要给出接口中所有抽象方法的具体实现
@Override
public boolean add(Object obj){
//具体如何将obj装进集合里面
底层obj装进数组中
}
@Override
public boolean remove(Object obj){
//当我们想要从ArrayList集合里面删除元素obj的时候 其实底层从数组中删除
写代码 -》 如何从数组里面找obj 删除
}
...
}

class LinkedList implements List{
@Override
public boolean add(Object obj){
//底层将obj添加进链表中添加
}
}

ArrayList + LinkedList -> List


interface Set extends Collection{
//add() remove()
补充Set集合才能使用的方法 不能涉及到下标
}

标签:obj,List,Object,数据类型,equals,m1,day13,集合
From: https://www.cnblogs.com/zhaodenghui33/p/18185493

相关文章

  • m1_day14
    课程内容ArrayList集合JCFCollectionMap[单值类型的集合]......
  • m1_day1
    课程内容:Java的优势Java的优势:跨平台*什么是平台平台指的是操作系统常见的操作系统:WindowsUnixLinuxSolaris[Sun]什么是跨平台用Java开发出来的应用程序不受底层操作系统的限制可以运行在所有的操作系统上面这是早期程序员的共同目标底层的功臣:JVM=j......
  • m1_day3
    课程内容:Java中的数据类型Java中的运算符Java中的数据类型什么是数据类型数据类型可以理解成数据的单位Java是一个强类型的编程语言所有的变量在第一次出现的时候必须有数据类型第二次出现不需要数据类型​钱:元角 分百美元日元个数:个只条栋....长......
  • m1_day4
    课程内容:Java中的运算符Java中的变量Java中的运算符:高-》低[+-*/%]+:当+遇到String类型的时候不再表示算数加法而是表示追加连接任何一个数据类型想要变成String+""intx=45;Stringy=x+"";*:当心数值超出int类型最大边界注意使用lon......
  • Multisim14--软件简介及安装教程(内含安装包)
    安装包见文章末尾 一、软件简介Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。工程师们可以使用Multisim交互式地搭建电路原......
  • cf gym101981e Eva and Euro coins
     20182019-acmicpc-asia-nanjing-regional-contest-en.pdf(codeforces.com) 这类字符串的能否从s状态到达t状态的题。还可以删除若干子串后然后比较。感觉是一种套路。 100↔111↔001011↔000↔110 01001↔10010可以移动 用栈,如果找到k个连续相同,然后栈删掉这k......
  • Mac(M1)配置基于ARM64的Tensorflow
    以下步骤最好先执行condaconfig--remove-keychannels 删除conda镜像源pipconfigunsetglobal.index-url 删除pip镜像源然后接下来的步骤最好挂上梯子。1.下载miniforge:从https://github.com/conda-forge/miniforge上找到arm64(AppleSilicon)版本进行下载,下一步下一步的......
  • JAVA语言学习-Day13
    参考教学视频:秦疆JVM概述JVM位置:操作系统之上JVM的体系结构.java->ClassFile->类加载器Classloader<-->运行时数据区RuntimeDataArea<-->本地方法接口<-本地方法库运行时数据区RuntimeDataArea<-->执行引擎方法区:MethodAreaJava栈:Stack本地方......
  • 笔记:J1939协议之DM1
    目标:学习SAE1939-73中的DM1,尤其是多包故障的传输规则一、基本概念SAE1939-73即CAN总线J1939协议的应用层-诊断符号缩写的含义DM1诊断信息1,当前故障码DM2诊断信息2,历史故障码DM3诊断信息3,历史故障码的清除/复位DM4诊断信息4,停帧参量DM5诊断信息5,诊断准备就绪DM6诊断信......
  • day13- 模块和包
    这节我们学习模块和包,这块呢,我们在实际使用的过程中,首先保证自己会用就可以,其次也可以加深对Python代码的理解。1、什么是模块开始之前,那我们思考下,之前学的过变量,函数属于一个模块吗?模块呢,就是Python程序,简单来说,就是一个.py的文件,就是属于一个模块那说明我们之前的函数和变......