-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() は正しい型を返します。

HashSetこれは、 asを宣言するとHashSet<Integer>、イテレータが (boxable) を返すという長い言い方Integerです。ボクシングの魔法を使って、Integerまたは戻ることができます。int

于 2012-10-09T16:20:03.093 に答える
0

「利回り」のようなものが必要な場合があります

lombok-pg を試して ください https://github.com/peichhorn/lombok-pg/wiki/Yield

于 2012-10-09T16:22:48.317 に答える