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

Как правильно добавить в Set объекты своего класса?

27.12.2014, 20:32. Показов 4750. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Собственно меня интересует вопрос как правильно добавить в Set объекты своего класса. Как я понял нужно переопределить метод equals() для того что бы в коллекцию не попадали одинаковые елементы?
Собственно с типами int и String все нормально работает, а с объектами типа MyClass нет. Кто нибудь может подсказать что нужно исправить?

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.Set;
import java.util.HashSet;
 
public class Test
{
    public static void main(String args[])
    {
        Set<Integer> iSet = new HashSet<Integer>();
        Set<String> sSet = new HashSet<String>();
        Set<MyClass> mSet = new HashSet<MyClass>();
 
        int iArray[] = {22,12,5,50,12,7,9,50,8,49};
        String sArray[] = {"Николай","Игорь","Анна","Николай","Иван","Ольга","Николай","Тимур","Антон","Игорь"};
 
        for(int i = 0; i < iArray.length; i++)
        {
            iSet.add(iArray[i]);
        }
 
        for(int i = 0; i < sArray.length; i++)
        {
            sSet.add(sArray[i]);
            mSet.add(new MyClass(sArray[i]));
        }
        for(int i : iSet)
        {
            System.out.println(i);
        }
        System.out.println("-----------------------");
        for(String s : sSet)
        {
            System.out.println(s);
        }
        System.out.println("-----------------------");
        for(MyClass m : mSet)
        {
            System.out.println(m);
        }
    }
 
    public static class MyClass
    {
        private String name;
 
        public MyClass(String n)
        {
            name = n;
        }
 
        public String toString()
        {
            return (name == null) ? null : name;
        }
 
        public boolean equals(MyClass m)
        {
            return name.equals(m.name);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2014, 20:32
Ответы с готовыми решениями:

Как поместить в initializer_list объекты своего класса?
файл с main #include &lt;iostream&gt; #include &quot;asd_string.h&quot; #include &quot;asd_vector.h&quot; //есть свой...

Как добавить в ListBox элементы своего класса
Подскажите, как добавить в listbox элементы своего класса, и задать им соответствующие текстовые...

Как правильно считать обьекты класса с файла в контейнер set ?
Всем привет, при считывании с файла полей класса в контейнер set. Заполнение проходит неправильно и...

Std::set, как добавить собственную проверку уникальности для класса?
Сразу к делу class Doc { public: Doc(){} ~Doc(){} std::wstring name; int id;

2
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
28.12.2014, 03:07 2
Цитата Сообщение от Hrollo Посмотреть сообщение
Как я понял нужно переопределить метод equals() для того что бы в коллекцию не попадали одинаковые елементы?
Еще нужно переопределить метод hashCode()
1
36 / 36 / 27
Регистрация: 05.11.2013
Сообщений: 149
28.12.2014, 09:46  [ТС] 3
спасибо
0
28.12.2014, 09:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2014, 09:46
Помогаю со студенческими работами здесь

Как добавить определенным объектам отдельное свойство, если эти объекты из класса?
&lt;div class=&quot;y&quot;&gt;тра-та-та&lt;div&gt; &lt;div class=&quot;y&quot;&gt;тра-та-та&lt;div&gt; &lt;div class=&quot;y&quot;&gt;тра-та-та&lt;div&gt; ...

динамически создать/удалить объекты класса (правильно сделал?)
создал класс: myclass { } завел вектор, в котором будут храниться указатели на объекты данного...

Как заставить std::set хранить объекты пользовательского типа?
Здравствуйте. Как заставить set хранить объекты некоторого класса или структуры? #include...

Использование своего объекта своего класса внутри другого
Здравствуйте. Есть класс для работы с матрицами. Все работает. Теперь нужно создать другой класс,...


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

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