Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 49
1

HashSet. Удалить объект-класс из HashSet

05.08.2017, 15:21. Показов 5022. Ответов 9

Author24 — интернет-сервис помощи студентам
Всем привет!

Есть код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        HashSet<Human> humanHashSet = new HashSet();
        
        humanHashSet.add(new Human("Bull"));
        humanHashSet.add(new Human("Bull"));
        humanHashSet.add(new Human("Smith"));
        humanHashSet.add(new Human("Will"));
 
        Iterator<Human> myIterHuman = humanHashSet.iterator();
        while(myIterHuman.hasNext()) {
            Human obj_Human = myIterHuman.next();
            if (obj_Human.surname.equals("Smith"))
                myIterHuman.remove();
        }
Есть ли более лаконичный способ удалить из humanHashSet объект-класс, в котором surname = "Smith"?

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2017, 15:21
Ответы с готовыми решениями:

Как добавить объект в HashSet из ObjectInputStream
Подскажите как добавить объект в HashSet из ObjectInputStream try(FileInputStream fileInputStream...

Как добавить в HashSet объект класса Color
Подскажите пожалуйста почему я не могу добавить объекты класса Color в HashSet? Eclipse выдает...

Как удалить элемент из HashSet?
Добрый день ! Есть HashSe в котором лежат целые числа типа Integer для просмотра значений...

Дубликаты в HashSet
Здравствуйте. Подскажите, как сделать так, чтобы коллекция HashSet&lt;Integer&gt; hs = new HashSet&lt;&gt;();...

9
4 / 4 / 7
Регистрация: 12.12.2014
Сообщений: 123
05.08.2017, 15:53 2
Там есть перегруженный метод remove()
https://docs.oracle.com/javase... ang.Object)

То есть в качестве аргумента задаешь объект, который нужно удалить
0
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 49
05.08.2017, 17:07  [ТС] 3
У объекта с полем Will нет имени.
Что я должен передать в метод remove?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
05.08.2017, 19:37 4
Цитата Сообщение от molasar Посмотреть сообщение
Есть ли более лаконичный способ удалить из humanHashSet объект-класс, в котором surname = "Smith"?
если мы говорим о 7 джаве, то нет
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
05.08.2017, 20:09 5
Class Human
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Human {
    private String name;
 
    public Human(String name) {
        this.name = name;
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Human)) return false;
 
        Human human = (Human) o;
 
        return name != null ? name.equals(human.name) : human.name == null;
    }
 
    @Override
    public int hashCode() {
        return name != null ? name.hashCode() : 0;
    }
 
    @Override
    public String toString() {
        return name;
    }
}

Class HumanSet
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class HumanSet {
    public static void main(String[] args) {
        HashSet<Human> set = new HashSet<>();
 
        set.add(new Human("Bull"));
        set.add(new Human("Bill"));
        set.add(new Human("Smith"));
        set.add(new Human("Will"));
 
        System.out.println(set);
        System.out.println(set.contains(new Human("Bull")));
        set.remove(new Human("Bill"));
        System.out.println(set);
        set.remove(new Human("Bull"));
        set.remove(new Human("Will"));
        set.remove(new Human("Smith"));
        System.out.println(set.isEmpty());
 
 
    }
}

Смотрите код. Это конечно экстремальный способ, но работает
0
Эксперт функциональных языков программированияЭксперт Java
4539 / 2732 / 486
Регистрация: 28.04.2012
Сообщений: 8,628
05.08.2017, 20:10 6
molasar, removeIf
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
05.08.2017, 21:18 7
Цитата Сообщение от v777779 Посмотреть сообщение
Это конечно экстремальный способ
проще говоря, костыль )
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
06.08.2017, 06:27 8
Цитата Сообщение от neske Посмотреть сообщение
проще говоря, костыль )
Вообще то нет, работа с объектом делается точно также как со строками.
Когда Вы ищете строку в списке и удаляете ее, на самом деле списку предлагают ноовый объект String с похожим содержанием. В данном случчае точно такая же методика.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
06.08.2017, 11:06 9
v777779, а потом кто-нибудь возьмет да поправит ваш equals, мол че там только одно поле, хочу все. А этот кусок внезапно сломается. Не ну в контексте учебной задачи может и пойдет, хотя по мне это явный костыль )
0
3 / 3 / 1
Регистрация: 12.09.2015
Сообщений: 33
08.08.2017, 21:41 10
В классе Human реализуйте методы equals и hashCode (Alt+Insert) в IDEA.
А далее так:
set.add(new Human("Ted"));
set.add(new Human("Bill""));
set.remove(new Human("Ted));
int x = set.size(); //1
0.50
08.08.2017, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2017, 21:41
Помогаю со студенческими работами здесь

ArrayList vs HashSet
Добрый день,я хотел бы узнать почему hashset Работает быстрее чем arraylist,ответ кеширование меня...

HashSet . TreeSet
С помощью Scanner ввести слова(слово exit останавливает ввод). Используя HashSet получить...

Удаление из HashSet
Ребят, поясните пожалуйста или киньте ссылочку на понятную статью, которая поможет понять почему...

Множество типа HashSet
Создать множество типа HashSet, которое содержит объекты &quot;Точка&quot; описываемые как (х, у). Затем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru