0

У меня есть программа, в которой люди предпочитают сидеть рядом с другими людьми. Они сидят за столиками с установленным количеством мест. Каждое место за столом имеет назначенный ему Человек, у этого Лица есть список предпочтений, которым они хотели бы сидеть рядом. Предпочтения оцениваются от 1 до 6.Сравнение ArrayLists

ех)

Боб на сиденье 1, Он отдает предпочтение, чтобы сидеть рядом с Джилл,

и что предпочтение оценивается 6. Он действительно хочет, чтобы сидеть рядом с ней.

Джилл на сиденье 2,

Она отдает предпочтение, чтобы сидеть рядом с Бобом, который аттестован 6 также.

Джош на сиденье 3,

Он отдает предпочтение, чтобы сидеть рядом с Давидом, который не за столом. (Его оценка предпочтения не будут учитываться)

Питер на заключительном сиденье, сиденье 4.

Его предпочтения Джош, со значением 3, и Боба, со значением 5.

Что такое хороший способ узнать, как проверить, является ли Имя в предпочтениях Лица за столом с использованием ArrayLists?

Это то, что я пришел с

for (int i = 0; i < seatsList.size(); i++) { // For the seats at the table 
    for (int j = 0; j < seatsList.get(i).getPrefArrayList().size(); j++) { // For the prefList for each seat        
     if(seatsList.get(i).getPrefArrayList().contains(seatsList.get(j).getName())){ 
      //score += seatsList.get(i).getOnePrefValue(j); //IGNORE THIS LINE FOR NOW(NOT REALLY IMPORTANT) 
     }   
    }   
} 

seatsList является ArrayList, который держит все места.

getPrefArrayList() возвращает ArrayList всех предпочтений этого человека.

getName() просто возвращает имя человека на определенное место

В этом примере внешний цикл будет перебирать места за столом. Внутренняя петля будет перебирать предпочтения каждого Лица (или места) за столом. Поскольку у некоторых людей будет больше предпочтений, чем у других, внутренний цикл не будет иметь постоянного количества итераций. Он будет меняться в зависимости от предпочтений Лица.

Проблема с этим примером является линия 3, в пределах Условный оператор

seatsList.get(j).getName() 

Поскольку существует вероятность того, что количество предпочтений человек будет иметь больше, чем количество мест за столом, вы получите ошибку индекса за пределами границ.

Есть ли в любом случае, что я мог бы это сделать? Это значение, узнайте, если любой предпочтение человека сидит за столом с ними. Ответ, вероятно, прямо на моем лице. Если кому-то интересно, это касается школьного задания с использованием генетических алгоритмов.

+0

Вы хотите узнать, не устраиваются ли какие-либо личные предпочтения человека за столом? Или вы хотите узнать, есть ли у них какие-то предпочтения? – Quicksilver002

+0

@ Quicksilver002 Любой из них –

ответ

0

попробовать что-то вроде этого:

for(Seat seat : seatsList){ //or whatever object type is in seatsList 
    boolean seatHasPreferenceAtTable = false; 
    for(Preference preference : seat.getPrefArrayList()){//or whatever object type is in getPrefArrayList() 
    for(Seat otherSeat : seatsList){ 
     if(otherSeat.getName().equals(preference.getName())){ 
     seatHasPreferenceAtTable = true; 
     } 
    } 
    } 
} 

Любопытное грубо, но это должно работать.

Смежные вопросы