Hashtable get方法是否返回多个值?

时间:2013-11-26 15:20:40

标签: java get hashtable

我正在将一些代码从java转换为C#,我遇到了ArrayList<Integer> values = hashtable.get(h);。问题引起 Hashtable get方法是否返回多个值?

5 个答案:

答案 0 :(得分:1)

HashTable返回一个值。如果该值恰好是Collection类型的对象,那么该值将指向其他几个值。

例如

HashTable<String, ArrayList<Integer>> table = new HashTable<String, ArrayList<Integer>>();

// Populate it with values.

ArrayList<Integer> value = table.get("KEY");

这怎么可能?

简单。 Java泛型。这是您在类中声明Generic type的地方,并在运行时定义它的类型。例如:

public class Test<T>
{
      private T instance;

      public Test(T instance)
      {
          this.instance = instance;
      }
}

这意味着您可以以任何方式声明此类。

Test<String> test = new Test<String>();
Test<Integer> test2 = new Test<Integer>();

instance的类型将是您声明的任何类型。

由于T默认为Object,因此您甚至可以在其中添加Collection

Test<ArrayList<String>> test3 = new Test<ArrayList<String>>();

答案 1 :(得分:0)

ArrayList本身就是一个值(一个arraylist)

HashTable<something, ArrayList<Integer>> hashtable = new HashTable<something, ArrayList<Integer>>();

所以它会将“某事”映射到整数的arraylist(即列表)

答案 2 :(得分:0)

get() method的返回类型为Object。所以这是一个Object。但是Java中的类型可以是List或任何Class

所以返回的Object完全取决于你之前插入的内容。

答案 3 :(得分:0)

如果您希望为一个密钥使用多个值Guava =&gt; Multimap 文档: http://guava-libraries.googlecode.com/svn-history/r13/trunk/javadoc/com/google/common/collect/Multimap.html

答案 4 :(得分:0)

如果您将该列表放在地图中(在某个键下),它只会返回一个值列表。

Map<String, List<Object>> map = new HashMap<>();
... // init map
List<Object> list = map.get(KEY);

Map<String, Object> map = new HashMap<>();
map.put(KEY, obj1);
map.put(KEY, obj2);
Object obj = map.get(KEY);