2012-11-15 55 views
1

是否有可能采取类似的Vector对象,使其具有多种仿制药?我知道当你创建一个类时可能会有这种可能,但是其他的类与普通的Java API(比如Vectors,Stack等)一起可以有多个泛型?的Java:矢量与多个仿制药

例如:

Vector<String, Integer> vect = new Vector<String, Integer>(); 
vect.add("Hello!", 0); 

由此看来,一个索引将具有两个值,字符串和整数。

在此先感谢!

+0

相关:?什么是C++对在Java中的等价物(http://stackoverflow.com/questions/156275/what-is-the -e-c-pairl-r-in-java) –

+1

http://stackoverflow.com/questions/2670982/using-tuples-in-java –

回答

1

Vector类实现可增长的对象数组,我认为你正在寻找地图,java.util.Map<key,value>,实现地图的是HashMap<k,v>

Map<Integer,String> map = new HashMap<Integer,String>(); 
map.put(1,"str"); 
+0

我从来没有使用过HashMap。它与HashTable有多相似? –

+0

它更贴近 –

+0

我猜地图和HashMap 只能用两个泛型调用吗?例如:你不能调用地图或HashMap的

4

我不会用一个Vector是你可以用一个列表。你的情况,你需要使用自定义类像

class MyClass { 
    String s; 
    int i; 

    MyClass(String s, int i) { 
     this.s = s; 
     this.i = i; 
    } 
} 

List<MyClass> list = new ArrayList<MyClass>(); 
list.add(new MyClass("Hello!", 0)); 

String s = list.get(0).s; 
int i = list.get(0).i; 
3

集合,例如向量,只能包含1种类型的对象。您正试图存储2个对象。创建一个名为StringIntegerTuple的类,该类包含对要存储的对象的2个引用,然后声明Vector并存储复合对象。

虽然语义很可能你想要一个HashMap

+0

创建这样一个元组类是海事组织的方式矫枉过正。 OO应该被用来增加价值,而不仅仅是为了它! http://prog21.dadgum.com/156.html – fgysin

+0

我同意但在Java中没有很多选项。 –