2012-10-09 70 views
-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呢?

+0

什麼是您的HashSet包含?我的意思是類型的元素? –

+0

什麼類型是「鄰居」?什麼存儲在它裏面? –

+1

你是什麼意思: - '返回(不打印)每個元素作爲int' ??你只能從任何方法返回一次.. –

回答

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是無類型(不具有通用型),所以我假設你需要向下轉換。但是,如果你neighborsHashSet竟是,那麼你的代碼可以簡化爲:

new ArrayList<Integer>(neighbors); 
0

如果使用genericised HashSet那麼迭代器將同樣類型的,it.next()將返回正確的類型。

這是一個很長的說法,如果你聲明HashSet爲那麼迭代器將返回一個(boxable)Integer。您可以通過boxing的魔法返回Integerint