1.自定义类作为Key时需要重写hashCode和equals
自定义类:
但用来作为key时:private Map<BiCoordinate, PixelType> map;却出现错误,无法正确索引。
如果需要自己编写一个类作为HashMap中的Key,需要重写函数:hashCode和equals
原来你的类是继承Object的.使用Object的hashCode生成的散列码.它默认是使用对象的地址计算散列码的.因此.两次new的MyKey的散列码是不一样的.用String对象作为HashMap的Key,则不会出现这种情况,这是因为String类重载了hashCode函数。
重写equals函数是因为当比较两个类时,如果这个类中没有equals函数,则到它的上一级去找,而如果自定义类继承自Object类,则调用Object类的equals,结果是按照这两个对象的地址比较的,自然是不会相等的。
改写如下:
这里的17有人说是任意质数,37可能是哈希系数,暂未确定,稍后有时间再细研究。
2.定义类比较策略 - Comparable 接口
使用Set保存BiCoordinate对象。当依次绘制出来时,发现对象顺序不正确,如下图
【image】
可用继承Comparable接口的方法解决。
3.动画时间线效果 - Timer
这里有人建议使用线程的sleep,此方法以后再研究。由于练习难度不高,目前使用的是Timer。
timer.schedule(
task, //TimerTask
delay,//延迟启动时间
cycle //重复周期
);
简单使用实例:
4.Thread.sleep()