今天写代码的时候有这样一个需求,需要对map进行自定义排序和删除map中一个指定的元素,从逻辑上讲先排后删和先删后排是没什么区别的,但是实际在代码运行中却出现了错误
(根据日期排序)
先排后删,结果:删除失败
如图,key为‘2019/4’的数据没有被移除
先删后排,结果:删除成功
(今天周五先下班了,马上要去赶飞机了,以下有一些参考)
再使用HashMap与HashSet时,我们常常会自定义一个对象作为key。在自定义对象时如果使用对象内的属性来生成HashCode,则一定不要提供该对象的setter方法,也就是说key应该是不可变类,否则可能会造成内存泄漏。
代码示例
package trysome.doYourSelf;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Lokk {
private static class People{
int age;
String name;
People(String name,int age){
this.name=name;
this.age=age;
}
@Override
public int