【发布时间】:2020-04-27 10:05:23
【问题描述】:
假设Employee 类具有三个属性。
class Employee {
int id;
String name;
String team;
public Employee(){
this.id = id;
this.name = name;
this.team = team;
}
}
我想在放入HashMap之前从对象中删除team。
Map<Integer, Employee> empMap = new HashMap<>();
Employee e1 = new Employee(100, "John", "Dev");
Employee e2 = new Employee(101, "Mary", "Dev");
Employee e3 = new Employee(103, "Andy", "QA");
empMap.put(e1.getId(), e1);
empMap.put(e2.getId(), e2);
empMap.put(e1.getId(), e3);
empMap 中的值不应包含 team 属性。创建新对象会起作用,但实时成本很高。有没有办法在不创建新对象的情况下实现这一点。
【问题讨论】:
-
empMap.put(e1.getId(), e1.setTeam(null));
-
“删除”实际上是什么意思?这是否意味着将属性值设置为null?
-
@Rami 实时对象将来自具有多个属性的不同来源,我只想保留少数属性,因为保留所有属性需要更多内存。并且设置 null 会导致错误,因为这些对象正在其他地方使用。
标签: java object collections hashmap maps