Java 如何访问地图中对象的字符串?

Java 如何访问地图中对象的字符串?,java,map,hashmap,Java,Map,Hashmap,不确定这个问题和我的实际问题是否意味着同一件事 我有一张地图,如下所示: Map<String, Animal> animalMap= new HashMap<String, Animal>; Animal lion = new Animal(); Animal elephant = new Animal(); Animal cheetah = new Animal(); animalMap.put("lion", lion); animalMap.put("eleph

不确定这个问题和我的实际问题是否意味着同一件事

我有一张地图,如下所示:

Map<String, Animal> animalMap= new HashMap<String, Animal>;
Animal lion = new Animal();
Animal elephant = new Animal();
Animal cheetah = new Animal();

animalMap.put("lion", lion);
animalMap.put("elephant", elephant);
animalMap.put("cheetah", cheetah);


你不需要一个HashMap。相反,Java类可以重写toString方法。执行此操作时,对象将自动转换为字符串

public class Elephant{
    private String name;

    public Elephant(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "this elephant is named" + this.name;
    }
}
如果要将其添加到大象类中,下面将调用新大象对象上的toString

Elephant e = new Elephant("steve");
System.out.println(e);

我不确定你到底想做什么,但我认为你想保留一个反向地图,这样你就可以进行反向查找

Map<Animal,String> animalMapReverse= new HashMap<>();
Animal lion = new Animal();
Animal elephant = new Animal();
Animal cheetah = new Animal();

animalMapReverse.put(lion,"lion");
animalMapReverse.put(elephant,"elephant");
animalMapReverse.put(cheetah,"cheetah");

我也不认为你需要HashMap。 更像是,你需要

public class Animal {

   private String name;

   public Animal(String name) {
      this.name = name;     
   }

   public String getName() {
      return name;
   }
}
然后你可以像这样使用它:

Animal lion = new Animal("lion");
Animal elephant = new Animal("elephant");
System.out.println(lion.getName() + " jumps over " + elephant.getName());       

您可以保留地图,它将允许您通过字符串名称查找动物

但是按照Mateva的建议,在动物类中添加一个字符串名称

地图可以是动物的,你也可以

public class Animal {
    private static Map<String,Animal> name2animal = ...;

    private String name;
    public Animal( String n ){
        name = n;
        name2animal.put( n, this );
    }

等等。

是否需要地图??因为您可以使用setter和getter方法来访问每个动物对象的名称。
System.out.println("The " + animalMapReverse.get(lion) +
    " jumped on the " + animalMapReverse.get(elephant) + "!");
public class Animal {

   private String name;

   public Animal(String name) {
      this.name = name;     
   }

   public String getName() {
      return name;
   }
}
Animal lion = new Animal("lion");
Animal elephant = new Animal("elephant");
System.out.println(lion.getName() + " jumps over " + elephant.getName());       
public class Animal {
    private static Map<String,Animal> name2animal = ...;

    private String name;
    public Animal( String n ){
        name = n;
        name2animal.put( n, this );
    }