检索treemap的值不会检索对象名称

时间:2014-09-05 04:32:13

标签: java data-structures tree

我有一个TreeMap,我将Integer指定为键,将Student指定为其值。有没有办法打印学生类型的确切名称?

例如,在驱动程序类中,我将实例化为:

    Student two   = new Student(1002,"two"  );

get()函数或pollFirstEntry()是否有办法返回实例化学生对象的实际名称,即" two"?而不是学生@ XXXXXXXXX。

import java.util.TreeMap;

public  class Table <K extends Comparable<K>, T>  // K = key,  T = item
{
    TreeMap<K,T> tree      = new TreeMap<K,T>();
    TreeMap<K,T> treeclone = new TreeMap<K,T>();

  public boolean isEmpty()
  {
    if (tree.size()>0)                      
        return false;
    return true;
  }

   public int size()
   {
       return tree.size();   
   }

   public T tableRetrieve(K key)
   {
       return tree.get(key);
   }

@SuppressWarnings("unchecked")
public void printTable()
   {
       treeclone = (TreeMap<K, T>)tree.clone();   
       int n = treeclone.size();
       for (int i = 0; i<n; i++)
       {
          System.out.println(treeclone.pollFirstEntry());
       }
   }
}

使用检索功能输出

1003: Student@22b3ea59

使用可打印功能输出

1002=Student@4903f4aa
1003=Student@22b3ea59
1004=Student@13ce168b
1005=Student@3f2a09d5
1006=Student@60eb9f58
1007=Student@d2a7c1e
1008=Student@603a9c52
1009=Student@27ecfcd9
1010=Student@37cc1f09

1 个答案:

答案 0 :(得分:1)

您可以使用toString()函数进行打印。 对于get函数,你得到一个T类型的项,如果T有自己定义的toString()方法,那么你可以执行以下操作来返回一个可打印的字符串。

return tree.get(key).toString(); 

对于T类型的任意对象,您需要覆盖toString()方法以提供实现。