Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.75 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Optional;
  3.  
  4. enum Sex {
  5.     Male, Female
  6. }
  7.  
  8. class Person {
  9.     private String name;
  10.     private Sex sex;
  11.     public Person(Sex sex, String name) {
  12.         this.sex = sex;
  13.         this.name = name;
  14.     }
  15.     public Sex getSex() {
  16.         return sex;
  17.     }
  18.     public String getName() {
  19.         return name;
  20.     }
  21. }
  22.  
  23. class Table {
  24.     private String name;
  25.     /*
  26.       ArrayList - динамический массив.
  27.       Optional<Person> - либо пустое значение либо значение типа Person.
  28.      */
  29.     private ArrayList<Optional<Person>> places;
  30.     public Table(String name, int numPlaces) {
  31.         this.name = name;
  32.         this.places = new ArrayList<Optional<Person>>(numPlaces);
  33.         for(int i = 0; i < numPlaces; ++i) {
  34.             this.places.add(Optional.empty());
  35.         }
  36.     }
  37.     /**
  38.        @returns true если человек сел за стол и false, если нет.
  39.      **/
  40.     public boolean sitDown(Person person) {
  41.         // Первый проход: проверить есть ли свободные места.
  42.         for(Optional<Person> place : this.places) {
  43.             if(!place.isPresent()) {
  44.                 place = Optional.of(person);
  45.             }
  46.             return true;
  47.         }
  48.         // Второй проход: проверить если пол хотябы одного из людей за столом мужской.
  49.         for(Optional<Person> place : this.places) {
  50.             Person sittingPerson = place.get();
  51.             if(sittingPerson.getSex() == Sex.Male) {
  52.                 place = Optional.of(person);
  53.             }
  54.             return true;
  55.         }
  56.         return false;
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement