-1

简单的问题。我正在遍历 Java 哈希集并希望将每个值作为 int 返回。我一直在使用下面的代码来至少打印这些值。该函数是一个类方法,'neighbors' 是类中的一个哈希集。

      neighbors = new HashSet<Integer>();

      void get_n(){
        Iterator it = neighbors.iterator();
        while(it.hasNext()){
          print(it.next()); // ideally, I would change this
        }
      }

如何修改代码以便我可以将每个元素作为 int返回(而不是打印)?

4

3 回答 3

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);
于 2012-10-09T16:19:30.687 回答
0

如果您使用泛型化的HashSet,那么迭代器的类型将相似,并且 it.next() 将返回正确的类型。

这是一个很长的说法,如果你声明你的HashSetasHashSet<Integer>那么迭代器将返回一个 (boxable) Integer。您将能够返回Integerint通过拳击的魔力。

于 2012-10-09T16:20:03.093 回答
0

哈哈

你可能想要'yield'之类的东西

尝试 lombok-pg https://github.com/peichhorn/lombok-pg/wiki/Yield

于 2012-10-09T16:22:48.317 回答