2014-03-05 81 views
-2

我的程序包含一个对象,我想了解一个包含对象的集合如何帮助我,如果我不能使用这些方法?集合与对象的反应如何?

我的代码,我用:

ClassMain c = new ClassMain(); 
Map<String, ClassMain> s = new HashMap<>(); 
s.put("S", c); 
Iterator it = s.keySet().iterator(); 

while(it.hasNext()) 
{ 
    Object key = it.next(); 
    System.out.println(key); 
} 

ClassMain:

public static void main(String[] args) { 
} 

public void print(){ 
    System.out.println("Printing"); 
} 
+0

您需要使用泛型。 – SLaks

+3

“如果我不能使用这些方法”??什么是问题? – 2014-03-05 20:49:17

+0

这不是问题。 – ninnemannk

回答

2

Iterator是一个泛型类型。但是,您将其用作原始类型。所以你失去了它应该有的类型信息。

的代码应该是:

Iterator<String> it = s.keySet().iterator(); 

while (it.hasNext()) { 
    String key = it.next(); 
    System.out.println(key); 
} 

或者简单:

for (String key : s.keySet()) { 
    System.out.println(key); 
} 
0

这是一个raw type,你不必使用它:

Iterator it = ... ; 

keySet返回参数化的Set<K>,你可以在这里使用,就像所有的一样集合方法,返回另一个类型的集合:

Iterator<String> = s.keySet().iterator(); 

这将让你使用由next为你提供到地图的实际类型返回的对象:

while(it.hasNext()) 
{ 
    String key = it.next(); 
    System.out.println(key); 
} 
0

集合用于,以及存储事物的集合。您可以像Map这样提取对象:

ClassMain c = new ClassMain(); 
Map<String, ClassMain> s = new HashMap<String, ClassMain>(); 
s.put("S", c); 

for (String key : s.keySet()) 
{ 
    ClassMain c = s.get(key); 
    c.print(); 
} 
相关问题