简单的问题。我正在迭代Java哈希集,并希望将每个值作为int返回。我一直在使用下面的代码至少打印值。该函数是一个类方法,'neighbors'是类中的一个hashset。
neighbors = new HashSet<Integer>();
void get_n(){
Iterator it = neighbors.iterator();
while(it.hasNext()){
print(it.next()); // ideally, I would change this
}
}
如何修改代码以便我可以返回(而不是打印)每个元素作为int?
答案 0 :(得分:0)
不确定你想要什么,但这是一个起点:
List<Integer> get_n(){
Iterator it = neighbors.iterator();
List<Integer> list = new ArrayList<Integer>();
while(it.hasNext()){
list.add(((Number)it.next()).intValue());
}
return list;
}
你的Iterator it
是无类型的(没有通用类型),所以我假设你需要向下转换。但是,如果您的neighbors
HashSet
实际上是HashSet<Integer>
,那么您的代码可以简化为:
new ArrayList<Integer>(neighbors);
答案 1 :(得分:0)
如果使用泛化HashSet,那么迭代器将被类似地键入,并且it.next()将返回正确的类型。
如果你将HashSet
声明为HashSet<Integer>
,那么迭代器将返回一个(可装箱的)Integer
,这是一个很长的路要走。您可以通过boxing的魔力返回Integer
或int
。
答案 2 :(得分:0)