【问题标题】:Return hashset values as ints以整数形式返回哈希集值
【发布时间】:2012-09-30 00:44:39
【问题描述】:

简单的问题。我正在遍历 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?

【问题讨论】:

  • 你的 HashSet 包含什么?我的意思是元素的类型??
  • “邻居”是什么类型?里面存储了什么?
  • 你是什么意思:-return (not print) each element as an int??您只能从任何方法返回一次..
  • 您到底想返回什么? ints 的数组?
  • 返回一个整数数组就可以了

标签: java int return loops hashset


【解决方案1】:

不确定你想要什么,但这是一个起点:

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&lt;Integer&gt;,那么您的代码可以简化为:

new ArrayList<Integer>(neighbors);

【讨论】:

    【解决方案2】:

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

    如果您将HashSet 声明为HashSet&lt;Integer&gt;,那么迭代器将返回一个(可装箱的)Integer。您将能够通过boxing 的魔力返回Integerint

    【讨论】:

      【解决方案3】:

      哈哈

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-14
        • 2020-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多