list、set、map以及hashCode和equals的方法规范简绍(包含上转型和下转型)

区别一:
	1.list和map有相同的父类,map没有
区别二:
	1.list可以添加重复,set不可以添加重复(对象类型除外)
	2.list可以有多个null,set只能有一个(本质上就是第一条区别)
	3.map不能出现重复的键,当出现重复时,键值将被最后一次覆盖,键值可以为对象


arrylist和linklist的区别
	1.arrylist:顺序存储
	2.linklist:链式存储
	顺序存储:存储密度大,存储在一篇连续的空间上,增删慢
	链式存储:存储密度低,不一定连续,增删快
若是加入对象时,相同内容的对象进行屏蔽的方法:
	重写hashCode和equals(重写equals必须重写hashCode)
	

hashCode和equals的方法规范

规范1:若重写equals(Object obj)方法,就必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcode()返回值。
说得简单点就是:“如果两个对象相同,那么他们的hashcode应该 相等”。
不过请注意:这个只是规范,如果你非要写一个类让equals(Object obj)返回true而hashcode()返回两个不相等的值,编译和运行都是不会报错的。不过这样违反了Java规范,程序也就埋下了BUG。

规范2:如果equals(Object obj)返回false,即两个对象“不相同”,并不要求对这两个对象调用hashcode()方法得到两个不相同的数。说的简单点就是:“如果两个对象不相同,他们的hashcode可能相同”。

上转型,下转型(假设存在父类Child ,Student为Child的子类)
	1.上转型:
		1)实例化出来的对象不具有子类特有的方法
		2)调用方法时,调用的为子类重写的方法
		Child child = new Student();
	2.下载型
		将父类强转为子类
		Student studnet =(Student)new Child()

补充:
instanceof
语句: 对象名 instanceof 类名
判断对象是不是这个类或者是这个类的子类

map常常和list一起使用,在list中加入map

map的适应
	Map<键的类型,键值的类型> map名=new hashMap<>()
	Map<键的类型,键值的类型> map名=new treeMap<>()
	键值的类型一般使用object,这样就可以添加多种书库类型了

Map<String,Object> map=new hashMap<>()
map.put("name":"zhangsan")
map.put("age":18)

map.get("name") //用于输出,写入键值就可以得到对应的键值


map.KeySet();//获得键值的集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值