Использование указателей arrayList вместо нескольких циклов? - PullRequest
0 голосов
/ 05 мая 2020
• 1000 "класс, у меня есть arrayList" Студенты ". Я пытаюсь получить доступ к количеству доступных комнат (комнат, в которых есть хотя бы одно пустое пространство) через другой класс, называемый «класс менеджера». Мне сказали, что я могу просто создать еще один список 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");
				}
		
		
		
  	}

Мой код еще не завершен, поэтому я не уверен, работает ли он ...

1 Ответ

1 голос
/ 05 мая 2020

Не могли бы вы поделиться своим кодом / предварительным? и четко указать, что не работает?

При этом, если не привязано к конкретным c ограничениям, следует использовать принцип инкапсуляции и единой ответственности ( см. SOLID в wiki ) сохраняя детали реализации в секрете и делегируя задачи более подходящим классам.

У вас может быть что-то вроде:

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(), который за сценой делегирует подчеркивающим блокам и объединяет результат ... и так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...