2014-03-13 65 views
1

我想創建一個項目註冊來註冊房間內的項目。項目註冊迭代器

在室等級,我有一個

/** 
    * Gets item description 
    */ 
    public ArrayList<Item> getItem() 
    { 
     return items; 
    } 

,並在項目註冊我現在有

public class ItemRegister 
{ 
    private HashMap<String,Item> items; 
    /** 
    * Constructor for objects of class ItemRegister 
    */ 
    public ItemRegister() 
    { 
     items = new HashMap<String,Item>(); 

    } 
    /** 
    * register items in hashMap 
    */ 
    public void register(Item a) 
    { 
     items.put(a.getDescription(),a); 


    } 

    public void register(ArrayList<Item> a) 
    { 
     Iterator<Item> i = a.iterator(); 
     while (i.hasNext()) 
     { 
     Room room = i.next(); 
     if (room.getItem() != null && room.getItem().equals(a)) 
     { 

     } 
     else{ 

     } 
     } 

    } 
} 

我試圖通過室內完成迭代週期,如果發現裏面的一個項目它將通過將其註冊到哈希映射中來註冊它

+0

你看到了什麼錯誤?你期望看到什麼?你能提供更多關於你卡在哪裏的信息嗎? ---最初我看到你正在迭代'ArrayList a',但你得到這個'Room room = i.next();' - 因爲這是一個'items'的數組,所以如果你有一個錯誤試着將它投入到'房間' – ochi

+0

這就是事情..我不完全確定如何寫它..這正是我試圖..我希望它通過房間循環,尋找物品對象。如果它發現它們,那麼它應該將它們添加到hashMap – user3401005

+0

,但是在你的代碼中沒有任何地方你有一個「房間」的定義...如果你需要循環遍歷所有的房間,爲什麼不通過一個房間列表,而不是'items'? – ochi

回答

0

希望這將足以讓你去:

import java.util.*; 

public class ItemRegister{ 

    public static void main(String []args){ 
     ItemRegister ir = new ItemRegister(); 
    } 

    // storing items registered here 
    private HashMap<String,Item> items; 

    /** 
    * Constructor for objects of class ItemRegister 
    */ 
    public ItemRegister(){ 
     items = new HashMap<String,Item>(); 

     ArrayList<Room> roomList = new ArrayList<>(); 
     roomList.add(new Room(new Item("Item A"))); 
     roomList.add(new Room(new Item("Item B"))); 
     roomList.add(new Room(new Item("Item C"))); 
     roomList.add(new Room(new Item("Item D"))); 


     System.out.println("Size of Registered Items:" + items.size()); 

     // Register only A item 
     Item aItem = new Item("Item A"); 
     register(roomList, aItem); 

     /// print whatever is in the register 
     System.out.println("Size of Registered Items:" + items.size()); 
     System.out.println("Registered Items:"); 

     for(Item item : items.values()){ 
      System.out.println(item.getDescription()); 
     } 
     System.out.println("---- end ----"); 

     // Register B item too 
     Item bItem = new Item("Item B");   
     register(roomList, bItem); 

     /// print whatever is in the register 
     System.out.println("Size of Registered Items:" + items.size()); 
     System.out.println("Registered Items:"); 

     for(Item item : items.values()){ 
      System.out.println(item.getDescription()); 
     } 
     System.out.println("---- end ----"); 
    } 

    /** 
    * register items in hashMap 
    */ 
    public void register(Item a){ 
     items.put(a.getDescription(), a); 
     System.out.println("Registered an Item"); 
    } 

    public void register(ArrayList<Room> roomList, Item a){ 
     Iterator i = roomList.iterator(); 

     while (i.hasNext()) { 
      Room room = (Room)i.next(); 

      if (room.getItem() != null && room.getItem().equals(a)){ 
       register(room.getItem()); 
      } 
     } 
    } 

    /* class Item */ 
    protected class Item{ 
     private String description; 

     Item(String description){ 
      this.description = description; 
     } 

     public String getDescription(){ 
      return this.description; 
     } 

     public boolean equals(Object o) { 
     if (this == o) { 
      return true; 
     } 
     if (!(o instanceof Item)) { 
      return false; 
     } 

     Item item = (Item) o; 

     if (!description.equals(item.description)) { 
      return false; 
     } 

     return true; 
    } 
    } 

    /* class Room */ 
    protected class Room{ 
     private Item item; 

     Room(Item item){ 
      this.item = item; 
     } 

     public Item getItem(){ 
      return this.item; 
     } 
    } 
}