java - 如何显示通用 HashMap 条目

标签 java generics

我试图理解泛型是如何工作的,我有这段代码来显示 newDetails 类的条目,这些类具有这些类型的参数 Map。这是我的代码。

public class Map<Key,Value> {

    private Map<Key, Value> entry;

    public Map(){
        entry = new HashMap<Key,Value>();
    }

    public void putEntry(Key k, Value id){
        entry.put(k, id);
    }

    public void printMe(){
        System.out.println();
        for (Map.Entry<Key, Value> x: entry.entrySet()){
            System.out.print(x+" ");
        }
    }
}

巧克力类

    public class Chocolates<T> {

    private List<T> listOfChocolate = new ArrayList<T>(); 

    public Chocolates(T choc){
        listOfChocolate.add(choc);
    }

    public void addChocolate(T getChoc){
        listOfChocolate.add(getChoc);
    }

    public List<T> getLists(){
        return listOfChocolate;
    }
}

主要方法

public static void main(String[] arg){

        Map<Chocolates<String>, Integer> newDetails = new Map<Chocolates<String>, Integer>();
        Chocolates<String> choco = new Chocolates<String>();

        newDetails.putEntry((new Chocolates<String>("Cadbury")), 1);
        newDetails.putEntry((new Chocolates<String>("Hersheys")), 2);
        newDetails.printMe();
    }

每当我尝试运行程序时,它只会显示这个

generics.Chocolates@9931f5=1 generics.Chocolates@19ee1ac=2 

如何显示实际条目,例如 Cadbury 1 然后是 Hersheys 2?


还有什么方法可以改进 main 方法或程序的某些部分,因为每当我添加一个新条目时,我总是创建一个新对象。最初我想做的是创建此代码的泛型版本:

Map<List<String>, Integer> newDetails = new HashMap<List<String>, Integer>();

正如有人告诉我的那样,在泛型类中实现该行代码要好得多。有什么建议么?谢谢

编辑 2

我按照 Nambari 的要求编辑了 map 类 printMe 方法

public void printMe(){
        System.out.println();
        for (Map.Entry<Key, Value> x: entry.entrySet()){
            System.out.print(x.getKey()+" "+x.getValue());
        }
    }

输出是:

generics.Chocolates@9931f5 1generics.Chocolates@19ee1ac 2

但是如果我按照 Joao 的建议添加这一行

public String toString(){
        return listOfChocolate.toString();
    }

输出是:

[Hersheys] 2[Cadbury] 1

感谢大家的帮助!

最佳答案

覆盖 Object#toStringChocolate 类中:

public class Chocolates<T> {

  // ...

  @Override
  public String toString() {
    return listOfChocolate.toString();
  }
}

关于java - 如何显示通用 HashMap 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589199/

相关文章:

java - 多个数据输入/输出流混淆

java - Java 中数组与集合的运行时安全性

generics - 如何从函数返回具有泛型关联类型的迭代器?

java - DataSnapshot.getValue 无法解析类型 T

java - ConflictingBeanDefinitionException : Same class name, 不同的包

java - 添加报价到列表

java - 了解对象初始化中的泛型

java - 使用 Gson 将 Json 解析为具有通用字段的项目列表

java - 在外部 API 中使用检查异常是个好主意吗?

java - 插件项目选项在 Eclipse 中不可用