С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 86

Получить рандомное количество записей из хешмапы

07.04.2020, 19:49. Показов 2043. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть хешмапа, в которой лежит 100 элементов (условно). Как я могу получить 10 случайных ключей из этой мапы и вывести их в виде одной строки?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2020, 19:49
Ответы с готовыми решениями:

Не удаётся получить элемент хешмапы по ключу
import java.io.*; import java.nio.charset.StandardCharsets; import java.util.HashMap; public class ScriptLoader { private...

Получить количество записей в таблице
Здравствуйте, делаю добавление в бд. Мне нужно получить количество записей в таблице и затем прибавить к этому количеству 1. Просто...

Как получить количество записей в запросе?
Здравствуйте! Как в запросе SELECT Таблица1.* FROM Таблица1; получить количество записей? Отдельным запросом?

14
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
07.04.2020, 20:09
Сделать лист ключей, рандомить число от 0 до 99, брать из листа ключ и выводить значение мапы
0
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 86
07.04.2020, 21:45  [ТС]
Мне нужно выводить не значение, а сам ключ.
И "дубликаты" не нужны. Если я загоню всё это дело в цикл на 10 проходов, то есть вероятность что "генератор рандомных чисел" выдаст мне два раза одинаковое значение, соответственно ключ будет повторяться. Перед этим ещё загонять сгенерированные числа в условный HashSet (для избежания дубликатов)?

Добавлено через 1 час 18 минут
Если кому-то понадобится решение в будущем для похожей задачи:
Java
1
2
3
4
List<String> keys = new ArrayList<>(map.keySet());
Collections.shuffle(keys);
List<String> randomKeys = keys.subList(0, 10);
return String.join("\n", randomKeys);
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
08.04.2020, 14:24
Цитата Сообщение от hsad Посмотреть сообщение
в условный HashSet
зато не нужно получать все ключи)).
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
        Map<Integer,Integer> integerIntegerMap = new HashMap<>();
        for (int i = 0; i < 102; i++) {
            integerIntegerMap.put(i,i);
        }
        //System.out.println(integerIntegerMap);
        Set<Integer> takenSetKey = new HashSet<>();
        Random rndGen = new Random(System.currentTimeMillis());
        int rndKey;
        while (takenSetKey.size() != 10){
            rndKey = rndGen.nextInt(integerIntegerMap.size());
            if (!takenSetKey.contains(rndKey)){
                takenSetKey.add(rndKey);
                System.out.print(integerIntegerMap.get(rndKey) + ",");
            }
        }
        takenSetKey.clear();
    }

а так вместо условного сета, необходимого объема, ты получаешь не менее условный лист, но в 10 раз! больший((
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.04.2020, 14:43
Aviz__, какое отношение то что ты написал имеет к вопросу ТС?

Замени Integer на String в своём, кхм, коде.
0
08.04.2020, 17:29

Не по теме:

Цитата Сообщение от korvin_ Посмотреть сообщение
какое отношение то что ты написал имеет к вопросу ТС?
ну, братец, раньше ты лучше соображал((

0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.04.2020, 17:59
Цитата Сообщение от Aviz__ Посмотреть сообщение
ну, братец, раньше ты лучше соображал
Ты, видимо, вообще перестал. Повторю: есть Map<String, Object> map, выбери 100 рандомных ключей из неё своим кодом.
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
08.04.2020, 18:33
Цитата Сообщение от korvin_ Посмотреть сообщение
вообще перестал.
ога, несомненно))
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
08.04.2020, 18:43
На работе приходится использовать седьмой JDK, ох как же я соскучился по стримам и лямбдам
Java
1
2
        String result = map.keySet().stream().sorted((a, b) -> ThreadLocalRandom.current().nextInt())
                .limit(10).collect(Collectors.joining("\n"));
1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
08.04.2020, 19:33
korvin_, на, учись))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
 
public class Helper {
 
    public static void main(String[] args) {
        Set<String> setStr = getStrSet(100); // спецаально для korvin_, это ключи из мапы
        Set<String> takenStr = new HashSet<>();
        Random rndGen = new Random(System.currentTimeMillis());
        for (String anElem : setStr) {
            if ((rndGen.nextInt(10000) + 1) % 13 == 0)
                takenStr.add(anElem);
        }
        System.out.println(takenStr);
    }
 
    static Set<String> getStrSet(int n) {
        Set<String> stringSet = new HashSet<>();
        while (n-- > 0) stringSet.add("" + (n + 1));
        return stringSet;
    }
}
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.04.2020, 19:51
Aviz__,

1) (rndGen.nextInt(10000) + 1) % 13 == 0 — почему 10000? Почему 13? Что за магически-числовая наркомания?
2) где контроль количества? Нужно не больше 10 элементов выбрать.
3) ничего, что этот код вообще не тот, который я комментировал? переобуваешься находу?

И по-мелочи:
1) new Random(System.currentTimeMillis()); — зачем исплользовать конструктор c явным seed?
2) почему не ThreadLocalRandom?
1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
08.04.2020, 20:30
Цитата Сообщение от korvin_ Посмотреть сообщение
где контроль количества?
пфф(( может сам додумаешь, как-то стыдно тебе показывать такую элементарщину, братец!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.04.2020, 20:41
Цитата Сообщение от Aviz__ Посмотреть сообщение
может сам додумаешь, как-то стыдно тебе показывать такую элементарщину, братец!
Как-то стыдно не написать такую элементарщину в простеньком коде.
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
09.04.2020, 07:16

Не по теме:

Цитата Сообщение от korvin_ Посмотреть сообщение
Как-то стыдно
ога) рад, что дошло! сильно не переживай, все стареют...

0
09.04.2020, 07:36
 Комментарий модератора 
Заканчивайте оффтоп
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2020, 07:36
Помогаю со студенческими работами здесь

Получить количество записей в запросе PDO
Приветствую WEB-разработчиков! Происходит ошибка, на функцию fetchColumn(), вот ее текст: Fatal error: Uncaught Error:...

Получить количество записей в таблице SQLite
В процессе создания приложения возникла огромная куча вопросов по работе с БД в Lazarus. Вот несколько наиболее актуальных для меня...

Получить количество записей при отборе в DataGridView
Доброго всем дня. Есть код: Public Class Form4 Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load ...

выбрать из таблицы рандомное число записей не меньше N и не больше M
Нужно выбрать из таблицы рандомное число записей не меньше N и не больше M... нашел вот что: ...

Получить уникальные значения поля и количество записей с этим же значением
Здравствуйте, есть таблица с данными следующего вида: |id | type | ..... |1 | 7 | ...... |6 | 7 | ...... |8 | 8 | ...... ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru