使用arrayList指针代替多个循环?

问题描述 投票:0回答:1

我想写一个包含很多类的程序,在一个叫 "Dorm "的类中,我有一个Blocks的数组List,在 "Block "类中,我有一个Room的数组List,在 "Room "类中,我有一个 "Students "的数组List。我想通过另一个叫 "Manager "的类来访问可用房间的数量(至少有一个空位的房间)。我被告知,我可以在Manager类中创建另一个arrayList,作为指针,搜索整个宿舍的空房间。

我的问题是,这要怎么做呢?

ps:这是我写的。

public static void availableRooms() { //Shows the available rooms in the dormitory.
		
		Dorms dormitory = new Dorms();
    	Room room1 = new Room();
		
		for(int i=0;i<dormitory.getBlocks().size();i++)
			for(int j=0;j<Block.getRoomList().size();j++) {
				if(!(room1.getStudentList().get(room1.getRoomCapacity()).equals(null)))
					System.out.print("/t" + room1.getStudentList().get(i) + "/t");
				}
		
		
		
  	}

我的代码还没写完,所以不知道能不能用... ...

java loops oop pointers arraylist
1个回答
1
投票

你能分享一下你的代码吗,并明确指出哪些地方不行?

说到这里,除非受到特定的约束,否则应该利用封装和单一责任原则(看SOLID),保持实现细节的私密性,并将任务委托给更相关的类。

你可能有这样的东西。

class Dorm {
  private List<Block> blocks = ...
  ...
  public int getAvailableRooms() {
      int total = 0;
      for (Block b : blocks) {
        total += b.getAvailableRooms();
      }
      return total;
   }
 }

class Block {
  private List<Room> rooms = ....
  ...
  public int getAvailableRooms() {
    int total = 0;
    for (Room r : rooms) {
      if (! r.isFull()) {
         total++;
      }
    }
}

class Room {
   private int capacity = ...
   private List<Student> students = ..
   ...
   public boolean isFull() {
       return capacity == students.size();
   }
}

其中Manager类,持有Dorm的实例,只需使用... ... getAvailableRooms() 方法,在幕后委托给下划线的Blocks和汇总结果...等等。

© www.soinside.com 2019 - 2024. All rights reserved.