首页 > 解决方案 > 在java中放入hashmap时如何从对象中排除属性

问题描述

可以说,Employee类具有三个属性。

class Employee {
    int id;
    String name;
    String team;

    public Employee(){
        this.id = id;
        this.name = name;
        this.team = team;
    }
}

我想team在放入HashMap.

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在其中具有属性。创建新对象会起作用,但实时成本很高。有没有办法在不创建新对象的情况下实现这一点。

标签: javaobjectcollectionshashmapmaps

解决方案


正如您所提到的,一种选择是创建没有团队属性的新对象。另一种是使用外观

public class MapEmpFacade extends Employee {
  public MapEmpFacade(Employee emp) {
    //define all methods to return the method results from emp, except for getTeam
  }
  public int getTeam() { return null; } //override getTeam
}

推荐阅读