Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 6

HashMap - в качестве ключа объект

07.10.2014, 16:36. Показов 3812. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Мне понадобилось решить такую задачу: ключ - комплексный объект, состоящий из 64 битного целого числа и строки из 5 латинских символов. Значение - double.

Делаю через HashMap, но результат entry.getKey() получается кривым : CeyInfo@52e922
Код ниже. Заранее спасибо.

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
public class AddValue {
public static List<CeyInfo> AddValue() throws URISyntaxException{
    Random rand = new Random();   
   Map<CeyInfo, Integer> hm = new HashMap<CeyInfo, Integer>();
   //List  list = new ArrayList();
   List<CeyInfo> allValues = new ArrayList<CeyInfo>();
   
 String sum = null;
  for (int i=0;i<5;i++)
  {                 CeyInfo listinfo = new CeyInfo();
                    listinfo.CeyNumber = rand.nextLong();  
                    sum="";            
                    sum=sum + (char)(rand.nextInt(26) + 'a')+(char)(rand.nextInt(26) + 'a')+(char)(rand.nextInt(26) + 'a')+(char)(rand.nextInt(26) + 'a')+(char)(rand.nextInt(26) + 'a');
                    listinfo.CeyString = sum;               
                    allValues.add(listinfo);
                    
  }
for(int i=0;i<5;i++)
{   for (CeyInfo lol:allValues ) 
{
        hm.put(lol, rand.nextInt());
}   
}
 
for(Entry entry: hm.entrySet()) {
  System.out.println(entry.getKey());
  System.out.println(entry.getValue());
}
 
    return null;
}}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2014, 16:36
Ответы с готовыми решениями:

Как могло получиться два одинаковых ключа в HashMap?
Я буду приводить просто примеры. Вопрос сложный для меня, поэтому решил обратиться за помощью. Вот так &quot;работает&quot;,...

Каким свойством должен обладать объект для добавления в ассоциативные контейнеры в качестве ключа?
помогите пожалуйста с правильной формулировкой и составлением ответа на такой вопрос: Каким свойством должен обладать объект, чтобы...

Создать программу, в которой словарь будет принимать в качестве ключа значения счётчика, а в качестве значения, то,
Создать программу, в которой словарь будет принимать в качестве ключа значения счётчика, а в качестве значения, то, что введет...

6
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
07.10.2014, 17:24
staildemon666, в классе CeyInfo переопределите метод toString.
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 6
07.10.2014, 17:35  [ТС]
reisal78, я не очень понял как это сделать. не могли бы вы показать место, или написать кусок кода. Спасибо.
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
07.10.2014, 17:58
staildemon666, покажите класс CeyInfo
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 6
07.10.2014, 18:00  [ТС]
reisal78, Вот и весь класс:

Java
1
2
3
4
public class CeyInfo {
    long CeyNumber;
    String CeyString;  
}
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
07.10.2014, 18:16
Лучший ответ Сообщение было отмечено staildemon666 как решение

Решение

staildemon666,
Java
1
2
3
4
5
6
7
8
9
10
11
12
class CeyInfo {
    long CeyNumber;
    String CeyString;
 
    @Override
    public String toString() {
        return "CeyInfo{" +
                "CeyNumber=" + CeyNumber +
                ", CeyString='" + CeyString + '\'' +
                '}';
    }
}
Добавлено через 54 секунды
Простой пример на эту тему:
Кликните здесь для просмотра всего текста
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
class Coordinate1 {
    private int x = 10;
    private int y = 15;
}
 
class Coordinate2 {
    private int x = 10;
    private int y = 15;
 
    @Override
    public String toString() {
        return "Coordinate2{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}
 
public class Example {
    public static void main(String[] args) {
        Coordinate1 coordinate1 = new Coordinate1();
        Coordinate2 coordinate2 = new Coordinate2();
        System.out.println(coordinate1);
        System.out.println(coordinate2);
    }
}


Добавлено через 8 минут
Но применив свои способности телепата, я попробую предложить вам следующее решение. Видимо именно его вы хотите увидеть

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
public class AddValue {
    public static List<CeyInfo> AddValue() throws URISyntaxException {
        Random rand = new Random();
        Map<CeyInfo, Integer> hm = new HashMap<CeyInfo, Integer>();
        //List  list = new ArrayList();
        List<CeyInfo> allValues = new ArrayList<CeyInfo>();
 
        String sum = null;
        for (int i = 0; i < 5; i++) {
            CeyInfo listinfo = new CeyInfo();
            listinfo.CeyNumber = rand.nextLong();
            sum = "";
            sum = sum + (char) (rand.nextInt(26) + 'a') + (char) (rand.nextInt(26) + 'a') + (char) (rand.nextInt(26) + 'a') + (char) (rand.nextInt(26) + 'a') + (char) (rand.nextInt(26) + 'a');
            listinfo.CeyString = sum;
            allValues.add(listinfo);
 
        }
        for (int i = 0; i < 5; i++) {
            for (CeyInfo lol : allValues) {
                hm.put(lol, rand.nextInt());
            }
        }
 
        for (Map.Entry entry : hm.entrySet()) {
            CeyInfo c = (CeyInfo) entry.getKey();
            System.out.println(c.CeyNumber);
            System.out.println(entry.getValue());
        }
 
        return null;
    }
}
Добавлено через 3 минуты
Да и потом... что то Вы не в ту степь идете...

Что бы объект пользовательского класса мог быть ключом для HashMap переопределите методы hashCode() и equals() в классе CeyInfo и пользуйтесь как обычной коллекцией =)
1
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 6
07.10.2014, 19:34  [ТС]
reisal78, Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2014, 19:34
Помогаю со студенческими работами здесь

Вытащить из HashSet объект HashMap
В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в Shared Preference выбрали столько...

MAP в качестве ключа
Есть map&lt;string, map&lt;Language, string&gt; lang; map&lt;string, map&lt;Language, string&gt; &gt;::iterator itr = langHashtable.find(keyLabe); Нахожу...

Map. 0 в качестве ключа [0]
Если создать словарь map и в качестве ключа использовать целые числа. Почему нельзя использовать ключ 0 ? Когда пытаешься вывести, выдает...

В качестве ключа массива переменная
Есть массив $Tasks=array('Николай'=&gt;array('work1'=&gt;'Настройка роутера','data1'=&gt;'26.01.2019','time1'=&gt;'8:00', ...

Структура в качестве ключа QMap
Вопрос такой, можно ли в качестве ключа в QMap поместить струткуру? К примеру: struct Dual { int a,b; Dual(int c, int d){...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru