При помощи Сканера удалить элементы Set [дубликат]

129
05 апреля 2019, 12:00

На данный вопрос уже ответили:

  • Как сравнивать строки в Java? 2 ответа

Написать class Student, в мейне создать Сет и заполнить его Студентами. Используя Scanner, Iterator создать возможность удаления элементов Сета введеным именем в консоле, после чего вывести на экран без удаленного элемента

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class Program {
    public static void main(String[] args) {
        Set<Student> students = new HashSet<>();
        students.add(new Student("Anton", 33, "Male", 88.3));
        students.add(new Student("Ira", 21, "Female", 38.3));
        students.add(new Student("Petro", 27, "Male", 46.3));
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter who:  ");
        String fromUser = scan.next();
        Iterator<Student> iterator = students.iterator();
        while (iterator.hasNext()) {
            Student next = iterator.next();
            if (next.getName() == fromUser) {
                iterator.remove();
            }
        }
        for (Student student : students) {
            System.out.println(student);
        }
    }
}
Answer 1

Замените

if (next.getName() == fromUser) {

на

if (next.getName().equals(fromUser)) {
class Student {
    private String name;
    Student(String name, int age, String sex, double weight) {
        this.name = name;
        // ...
    }
    String getName() {
        return this.name;
    }
    @Override
    public String toString() {
        return String.format("Student <'%s'>", name);
    }
}
// ...
public static void main(String[] args) {
    Set<Student> students = new HashSet<>();
    students.add(new Student("Anton", 33, "Male", 88.3));
    students.add(new Student("Ira", 21, "Female", 38.3));
    students.add(new Student("Petro", 27, "Male", 46.3));
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter who: ");
    String fromUser = scan.next();
    Iterator<Student> iterator = students.iterator();
    while (iterator.hasNext()) {
        Student next = iterator.next();
        if (next.getName().equals(fromUser)) {
            iterator.remove();
        }
    }
    for (Student student : students) {
        System.out.println(student);
    }
}

Консоль:

Enter who: Ira
Student <'Anton'>
Student <'Petro'>

PS.

Начиная с java 8, цикл с итератором можно заменить на эту конструкцию:

students.removeIf(next -> next.getName().equals(fromUser));
READ ALSO
Android, полный путь до директории

Android, полный путь до директории

Недавно начал изучать AndroidДелаю приложение, которое удаляет файлы из своей корневой папки

172
Не работает svg анимация

Не работает svg анимация

в анимации не отрабатывает fill-opacity

170
Как добавить кнопку запуска видео выше плеера

Как добавить кнопку запуска видео выше плеера

Имеется видео на компьютере нужно добавить постер выше плеера, так же отдельно есть чёрный экран и кнопкаПри нажатии на оранжевую кнопку...

160
Как сделать галлерею изображений как masonry, только горизонтальную и без js?

Как сделать галлерею изображений как masonry, только горизонтальную и без js?

Совсем замучился с математикой, уже начинаю просто гадать( Нужно сделать галерею, типа masonry или justifeid, только без js, и горизонтальную

158