java24
1.双列集合Map定义
collection和Map都自有contains方法
把实现类对象赋值给接口类对象属于多态的一种,但是这样不能使用实现类里面的特殊方法和重写方法
写好的API里面好像只有数组的打印值是地址值
2.Map遍历方式
Entry是Map接口里面的一个内部接口,所以调用它需要Map.Entry,如果不想要出现"Map.",那么就需要导包:
3.HashMap
如果索引处有Entry对象,并且键属性值一样,那么新Entry将覆盖旧的Entry(即put方法底层)
注意:max的初始值不设为其中一个景点的投票值是因为可能其中一个景点没被投票,没进HashMap集合,会报错;还有,可能会出现多个投票值一样并且都是最大值的景点,所以先求最大值,再输出投票值与最大值一样的景点,这样就不会漏掉其中的景点。太细了吧。
4.LinkedHashMap
5.TreeMap
默认情况下都是基本数据类型实现Comparable,重新里面CompareTo方法,而TreeMap又会调用Comparable里面的CompareTo方法来排序,原因:
想要自定义排列就需要在TreeMap方法的形参添加Comparator对象,并重写Comparator里面的compare方法:
如果键是自定义对象,并且没有给TreeMap添加形参Comparator或者自定义对象没有实现Comparable接口,编译就会报错
下面是Student实现Comparable接口的方式,重写Comparable方法:
如果想要使用Comparator也是一样的代码
6.实例化与构造器
7.hashmap和TreeMap源码
c是class类的首字母,I是接口inteface的首字母,m是methor方法的首字母,方法名跟类名一样的就是构造方法,
方法后面有灰色的向上箭头外加灰色类名就表示这个方法的类是继承了父类或者实现了接口然后这个方法是父类或者接口的重写方法
方法本身就是灰色的并且方法后面有灰色的向右箭头外加灰色的类名就说明这个方法是继承下来的方法
f是field属性的首字母,是这个类的成员变量或者常量(static final)
源码很难看懂的原因是源码阅读性差,没注释,结合数据结构等等
源码很难懂,建议看视频