思考,为什么我们在HashMap put key 的时候经常使用String 或者Integer?,A:String 、Integer 都是final 修饰的累,都很好的重写了 hashCode 和 equals方法,最关键的他们是Immutable类,为不可变类。可以保证hashCode的稳定性。,1. 线程安全,省去了加锁的过程,因为对象内容不可变就不用担心线程同时对对象做修改,2. 拷贝效率高。当类不可变时, 拷贝其对象只需拷贝指针即可,而不用拷贝对象本身,不用担心会被修改,3. 可以作为HashMap的key,类不可变保证了Hashcode的稳定性。,A:主要关注两点即可,覆写hashCode以及equals方法应该遵循的原则,实现一个Immutable的类,那么如何实现一个不可变类呢。,1)类需要用final修饰,2)成员变量使用 private final 修饰、对外不提供set方法。,3)如果成员函数使用构造函数去接受外部的数据,成员变量,需要使用接受对象的拷贝(copy),4)Get方法返回外部接受的成员变量,返回成员变量的拷贝(copy),
© 版权声明
文章版权归作者所有,未经允许请勿转载。