课程内容:
-
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
//单值集合统一的父接口标签:obj,List,Object,数据类型,equals,m1,day13,集合 From: https://www.cnblogs.com/zhaodenghui33/p/18185493
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集合才能使用的方法 不能涉及到下标
}