0

我创建了 Person 的实例,并将它们放在一个Map<String, Person>. map 条目的键与 Person 的 name 属性相同。既然名字是可以改的,那怎样才能让map的key和person的属性都一样呢?

public class Person{

    private String name;

    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }

}

在这种情况下我什至应该使用地图吗?有没有更好的方法使用例如列表来做到这一点?

编辑:我需要什么可以解释:类似于列表的东西。只是 List.get() 函数不按索引 ID 返回,而是按对象的属性值返回。列表不能包含多个具有此值的对象。

4

1 回答 1

0

最好的办法是保留我要给该人的某个用户的地图,名称不是一个好密钥,因为正如您所提到的,它可以更改,但是如果您生成密钥,那么它始终是已知的并且无法更改通过外部输入。

为什么在第一种情况下必须将人员存储在地图(或任何数据结构)中?

我真的不确定细节,但是您可以将所有人存储在一个数组中,并每次都按名称进行查找,但这会导致性能问题,因为您正在遍历此列表以查找该项目.

 public class Person{
     private static int count = 0;
     private string name;
     private int ID;
     public Person(string name){
         this.id =++count;
         this.name = name;
     }
      //the rest of your code;

      public Int GetId(){
         return this.ID;
      }
 }

这可能并不理想,因为 int 的最大大小限制了人数。

这种方式也非常好,因为现在您不必担心名称是唯一的,因为您正在键入人的 id。

如果您确实必须按名称进行查找,那么您将 a) 必须保留地图的一个实例并在每次亲自调用集合名称时更新它,或者将所有人保存在一个数组中并在何时进行查找你想接近他们。

于 2013-11-06T23:48:36.440 回答