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

Задача с коллекциями

30.06.2018, 19:25. Показов 881. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо сделать так, чтобы чтобы можно было сразу за один ввод данных в цикле осуществить поиск во всех четырех контейнерах(последовательный поиск в неотсортированном ArrayList, бинарный поиск в отсортированном, и поиск в HashSet и TreeSet). Контейнеры должны быть созданы и при необходимости отсортированы заранее, до начала цикла поиска.
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
import java.util.*;
 
public class Loader
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        HashSet<String> result = new HashSet<>();
 
        char[] letters = {'А', 'В', 'Е', 'К', 'М', 'Н', 'О', 'Р', 'С', 'Т', 'У', 'Х'};
        int[] regions = {1, 2, 3, 4, 5, 41, 42, 43, 44, 45};
 
        for(;;)
        {
            System.out.println("Введите номер машины: ");
            String input = scanner.nextLine().trim();
 
            for (char letter : letters)
                for (int region : regions)
                    for (int i = 0; i <= 999; i++)
                    {
                        String carNumber = String.format("%2$c%1$03d%2$c%2$c%3$02d", i, letter, region);
                        result.add(carNumber);
                    }
 
            for (char letter1 : letters)
                for (char letter2 : letters)
                    for (char letter3 : letters)
                        for (int region : regions)
                            for (int i = 0; i <= 9; i++)
                            {
                                String carNumber = String.format("%1$c%4$d%4$d%4$d%2$c%3$c%5$02d", letter1, letter2, letter3, i, region);
                                result.add(carNumber);
 
                                carNumber = String.format("%1$c%4$d00%2$c%3$c%5$02d", letter1, letter2, letter3, i, region);
                                result.add(carNumber);
                            }
            long start = System.nanoTime();
            boolean exist = result.contains(input);
            long finish = System.nanoTime();
 
            if (result.contains(input))
            {
                System.out.println(String.format(Locale.US, "%b (%fms)", exist, (finish - start) / 1_000_000.0));
                System.out.println("Total: " + result.size());
            }
            else
            {
                System.out.println(String.format(Locale.US, "%b (%fms)", exist, (finish - start) / 1_000_000.0));
                System.out.println("Total: " + result.size());
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2018, 19:25
Ответы с готовыми решениями:

Работа с коллекциями
Добрый Вечер ))) . Я самоучка. У меня задания и я не могу его сделать . Можете мне помочь ?Я загрузил файл там всё кнопки созданы. А как...

Работа с коллекциями
Ребят, помогите пожалуйста) У меня есть файл, содержащий информацию о студентах, в формате calc. Мне нужно эту информацию запихнуть в...

Работа с коллекциями
Здравствуйте возникла такая проблема: Допустим есть класс студент который содержит имя, фамилию и курс public class Student{ ...

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.07.2018, 09:29
в чем сложность возникла?

Цитата Сообщение от Hektor12 Посмотреть сообщение
for (char letter1 : letters)
for (char letter2 : letters)
for (char letter3 : letters)
for (int region : regions)
это что вообще? для чего начинать несколько циклов с letters, первого не достаточно?
0
0 / 0 / 1
Регистрация: 02.06.2018
Сообщений: 6
01.07.2018, 11:55  [ТС]
Сложность в том, что необходимо вывести время поиска по 4 контейнерам сразу, а не по одному, как здесь. (у меня получается большой код, а нужно сделать компактно и четко)

Добавлено через 47 минут
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import java.util.*;
 
public class Loader
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        ArrayList<String> result = getNumbers();
        Collections.sort(result);
        TreeSet<String> treeSet = new TreeSet<>(result);
        HashSet<String> hashSet = new HashSet<>(result);
 
        for(;;)
        {
            System.out.println("Введите номера машин: ");
            String array = scanner.nextLine();
            String binary = scanner.nextLine();
            String tree = scanner.nextLine();
            String hash = scanner.nextLine();
 
            long start = System.nanoTime();
            boolean exist = result.contains(array);
            long finish = System.nanoTime();
 
            if (result.contains(array))
            {
                System.out.println(String.format(Locale.US, "%b (%fms)", exist, (finish - start) / 1_000_000.0));
            }
            else
            {
                System.out.println(String.format(Locale.US, "%b (%fms)", exist, (finish - start) / 1_000_000.0));
            }
            System.out.println("Total: " + result.size());
            System.out.println(" ");
 
            long start2 = System.nanoTime();
            boolean exist2 = result.contains(binary);
            long finish2 = System.nanoTime();
            int bin = Collections.binarySearch(result, binary);
 
            if (bin >= result.size())
            {
                System.out.println(String.format("%b (%fms)", exist2, (finish2 - start2) / 1_000_000.0));
            }
            else
            {
                System.out.println(String.format("%b (%fms)", exist2, (finish2 - start2) / 1_000_000.0));
            }
            System.out.println("Total: " + result.size());
            System.out.println(" ");
 
            long start3 = System.nanoTime();
            boolean exist3 = treeSet.contains(tree);
            long finish3 = System.nanoTime();
 
            if (treeSet.contains(tree))
            {
                System.out.println(String.format("%b (%fms)", exist3, (finish3 - start3) / 1_000_000.0));
            }
            else
            {
                System.out.println(String.format("%b (%fms)", exist2, (finish3 - start3) / 1_000_000.0));
            }
            System.out.println("Total: " + treeSet.size());
            System.out.println(" ");
 
            long start4 = System.nanoTime();
            boolean exist4 = hashSet.contains(hash);
            long finish4 = System.nanoTime();
 
            if (hashSet.contains(hash))
            {
                System.out.println(String.format("%b (%fms)", exist4, (finish4 - start4) / 1_000_000.0));
            }
            else
            {
                System.out.println(String.format("%b (%fms)", exist4, (finish4 - start4) / 1_000_000.0));
            }
            System.out.println("Total: " + hashSet.size());
            System.out.println(" ");
        }
    }
 
    private static ArrayList<String> getNumbers()
    {
        ArrayList<String> result = new ArrayList<>();
        char[] letters = {'А', 'В', 'Е', 'К', 'М', 'Н', 'О', 'Р', 'С', 'Т', 'У', 'Х'};
        int[] regions = {1, 2, 3, 4, 5, 41, 42, 43, 44, 45};
 
        for (char letter : letters)
            for (int region : regions)
                for (int i = 0; i <= 999; i++)
                {
                    String carNumber = String.format("%2$c%1$03d%2$c%2$c%3$02d", i, letter, region);
                    result.add(carNumber);
                }
 
        for (char letter1 : letters)
            for (char letter2 : letters)
                for (char letter3 : letters)
                    for (int region : regions)
                        for (int i = 0; i <= 9; i++)
                        {
                            String carNumber = String.format("%1$c%4$d%4$d%4$d%2$c%3$c%5$02d", letter1, letter2, letter3, i, region);
                            result.add(carNumber);
 
                            carNumber = String.format("%1$c%4$d00%2$c%3$c%5$02d", letter1, letter2, letter3, i, region);
                            result.add(carNumber);
                        }
        return result;
    }
}
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
05.07.2018, 21:09
1. Создать метод search
пусть он ищет во всех контейнерах за раз.
2. Перед вызовом метода поиска создать начальное время, после вызова поиска конечное время.

Добавлено через 9 минут
Ну или создать отдельно методы поиска для каждого контейнера.
И создать метод searchAll для поиска во всех контейнерах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2018, 21:09
Помогаю со студенческими работами здесь

работа с коллекциями
Всем привет! Вопрос следующий (просьба не ругать начинающего чайника): Необходимо цитата &quot;Написать процедуру которая принимает...

Работа с коллекциями
есть коллекция объектов собранная при помощи SelectMany и отсортирована по GroupBy. Из этой коллекции выбираю группу файлов при помощи...

Работа с коллекциями.
Даны: массив А из 5 целых, массив Б из 4 целых. Создать из массивов множества МА и МБ и получить множество МС=(МА U МБ)\(МА ∩ МБ). ...

Работа с коллекциями!
Надо написать программу для выборочного копирования из списка с к-го элемента n штук.использовал метод subList но толком не знаю как...

Работа с коллекциями джава
Как добавлять объекты в коллекция с помощью своих методов? package С; import java.util.ArrayList; import java.util.Iterator; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru