• HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, это как пример работы программы)

    Программа справочник
    Введите название группы контактов:
    Семья
    Создать еще одну группу (введите название или введите нет)?
    Друзья
    Создать еще одну группу (введите название или введите нет)?
    нет
    Создать контакт (введите наименование и его номер или введите нет)?
    John Smith +7(911)111-11-11
    Укажите группы контакта через пробел
    Семья
    Создать контакт (введите наименование или введите нет)?
    нет
    Группы в справочнике:
    - Семья:
    Имя: John Smith, Телефон: +7(911)111-11-11
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, вот пример как программа должна работать:
    60f04deb3b9e5167423923.png
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, что-то опять у меня не клеется(((
    по условиям задачи я должен создать два класса PhoneContacts и Contact. В классе PhoneContacts я должен создать HashMap с ключом название группы и значением коллекция контактов и добавить методы добавления группы и добавление контакта в группу .
    В классе PhoneContacts я создал ArrayList groups и в него добавляю созданные группы и HashMap note, куда по идее должен сохранять ключи (название группы) и значения (контакты, но как это сделать пока не разобрался).
    В классе Contact я создал ArrayList contacts куда сохраняю добавленный пользователем контакт.

    Как я понимаю в классе PhoneContacts я должен создать метод который будет брать наименование группы которую пользователь вводит после добавления контакта, и добавлять этого контакта по ключу группы в HashMap note.

    В вашем примере я понял как добавлять вручную контакт в группу, а вот как взять этого контакта из листа который в другом классе находится не понимаю...
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, вот у мен как и вопрос как добавить в мапу из листа группу и список контактов....
    Если группы и контакты пользователь вводит сам.
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, все равно не получается, можете посмотреть что у меня не корректно в коде?)

    import java.util.Scanner;
    
    public class Main {
    
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Программа справочник" +
                    "\nВведите название группы контактов:");
    
            while (true) {
                String input = scanner.nextLine();
                if ("нет".equals(input)) break;
                PhoneContacts.addGroup(input);
            }
            PhoneContacts.toStringList();
    
            System.out.println("Создать контакт (введите наименование и его номер или введите нет)?");
            while (true) {
                String input = scanner.nextLine();
                if ("нет".equals(input)) break;
                Contact.addContacts(input);
    
            }
        }
    
    }
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class PhoneContacts {
    
        static List<String> groups = new ArrayList<>();
        static Map<String, List<Contact>> note = new HashMap<>();
    
        public static void addGroup(String input) {
            System.out.println("Создать контакт (введите наименование и его номер или введите нет)?");
            groups.add(input);
        }
    
        public static void toStringList() {
            System.out.println(groups.toString());
        }
    
        public static void contactAddGroup (String input) {
            if (groups.contains(input)) {
                note.put(input, );
            }
        }
    }
    
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Objects;
    
    public class Contact {
        protected String name;
        protected String number;
    
        static List<Contact> contacts = new ArrayList<>();
    
        public Contact(String name, String number) {
            this.name = name;
            this.number = number;
        }
        
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Contact contact = (Contact) o;
            return Objects.equals(number, contact.number);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(number);
        }
    
        @Override
        public String toString() {
            return "Contact{" +
                    "name='" + name + '\'' +
                    ", number='" + number + '\'' +
                    '}';
        }
    
        public static void addContacts (String input) {
            String[] parts = input.split(" ");
            String nameFirst = parts[0] + " " + parts[1];
            String num = parts[2];
            Contact cont = new Contact(nameFirst, num);
            contacts.add(cont);
        }
    
    }
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo, в теории вроде все понимаю, а вот как на практике это сделать не знаю, можете пример привезти.
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Dmitry Roo static с каждого поля убрал, вроде список групп добавил, но не ясно как перевести запись "John Smith +7(911)111-11-11" в объект класса Contact. А так же как связать потом в HashMap группы и контакты.

    import java.util.Scanner;
    
    public class Main {
    
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Программа справочник" +
                    "\nВведите название группы контактов:");
    
            while (true) {
                String input = scanner.nextLine();
                if ("нет".equals(input)) break;
                PhoneContacts.addGroup(input);
            }
            PhoneContacts.toStringList();
    
            System.out.println("Создать контакт (введите наименование и его номер или введите нет)?");
            while (true) {
                String input = scanner.nextLine();
                if ("нет".equals(input)) break;
                Contact.addContact(input);
            }
        }
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class PhoneContacts {
    
        static List<String> groups = new ArrayList<>();
        static Map<String, Contact> note = new HashMap<>();
    
        public static void addGroup(String input) {
            System.out.println("Создать контакт (введите наименование и его номер или введите нет)?");
            groups.add(input);
        }
    
        public static void toStringList() {
            System.out.println(groups.toString());
        }
    
    
    }
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Objects;
    import java.util.Scanner;
    
    public class Contact {
        protected String name;
        protected String number;
        protected String group;
    
        static List<String> groups = new ArrayList<>();
    
        public Contact(String name, String number) {
            this.name = name;
            this.number = number;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getNumber() {
            return number;
        }
    
        public void setNumber(String number) {
            this.number = number;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Contact contact = (Contact) o;
            return Objects.equals(name, contact.name) && Objects.equals(number, contact.number);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, number);
        }
    
        @Override
        public String toString() {
            return "Contact{" +
                    "name='" + name + '\'' +
                    ", number='" + number + '\'' +
                    '}';
        }
    
        public static void addContact(String input) {
            Scanner scanner = new Scanner(System.in);
            String[] parts = input.split(" ");
            Contact user = new Contact(parts[0], parts[2]);
            System.out.println("Укажите группы контакта через пробел");
            System.out.println(user.toString());
            String input2 = scanner.nextLine();
            PhoneContacts.addGroup(input2);
        }
    
    }
  • HashSet Список студентов?

    @LarionovSergey Автор вопроса
    Dmitry Roo, разобрался, большое спасибо!
  • HashSet Список студентов?

    @LarionovSergey Автор вопроса
    Dmitry Roo, При выполнение программы, ввожу двух разных студентов с одним и тем же studentId, и при выходе из программы на экран выводит обоих студентов с одинаковым studentId, а так не должно быть, не может быть студентов с одни и тем же studentId.
  • HashSet Список студентов?

    @LarionovSergey Автор вопроса
    Дмитрий можете еще подсказать, как переопределите методы hashcode и equals для класса Student так, чтобы нельзя было сохранить двух студентов с одинаковым номером студенческого билета.

    import java.util.Objects;
    
    public class Student {
        protected String name;
        protected String group;
        protected String studentId;
    
        public Student(String name, String group, String studentId) {
            this.name = name;
            this.group = group;
            this.studentId = studentId;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return Objects.equals(name, student.name) && Objects.equals(group, student.group) &&
                    Objects.equals(studentId, student.studentId);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, group, studentId);
        }
    
        @Override
        public String toString() {
            return name + ", " + group + ", " + studentId;
        }
    }
  • HashSet Список студентов?

    @LarionovSergey Автор вопроса
    Спасибо за подсказку, сам почему то не догадался…
  • HashMap телефонный справочник?

    @LarionovSergey Автор вопроса
    Модератор, скорректировал вопрос.
  • HashSet Список студентов?

    @LarionovSergey Автор вопроса
    Модератор, скорректировал вопрос.
  • Проверка доступа к ресурсу?

    Орхан Гасанлы, разобрался, большое спасибо за объяснение!
  • Проверка доступа к ресурсу?

    Орхан Гасанлы, Спасибо за ответ, но этот шаг сам преодолел и уже подумал что решил задачу, но нет, почему то при передаче user-а методу проверки возраста у меня идет двойной поиск user-а, передаю я его такой командой в теле метода main:
    validateUser(getUserByLoginAndPassword(login, password));
    Сам код тут:
    https://replit.com/@LarionovSA/Access#Main.java
  • Проверка доступа к ресурсу?

    Здравствуйте!
    Совсем запутался, просьба подсказать, что надо писать в теле цикла foreach на пятом шагу.