Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789

Как можно упростить код при преобразовании вложенных типов (коллекции)

27.05.2018, 12:59. Показов 747. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код сервлета.
Он описывает историю запросов от пользователя.
Данная история записывается в коллекцию.

В итоге получается вот так:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Текущий массив чисел:
[186]
 
История массивов:
[110]
[350]
[429, 165, 836, 598, 44, 268, 909, 329, 178, 171, 690, 894, 903, 904, 969, 457, 936, 64, 122]
[186]
 
 
История доступа:
Sun May 27 12:52:02 MSK 2018 - 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1
Sun May 27 12:52:04 MSK 2018 - 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1
Sun May 27 12:52:06 MSK 2018 - 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1
Sun May 27 12:52:07 MSK 2018 - 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1
 
 
Попробовать еще


А вот сервлет:

Кликните здесь для просмотра всего текста
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
package servlets;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
@WebServlet("/second.html")
public class SecondServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8"); //установили кодировку для ответа
        response.setContentType("text/html"); // MIME-тип html-страницы, для ответа
 
        PrintWriter out = response.getWriter();
 
        /*получаем атрибут, который содержит массив значений,
         сформированный в текущем запросе*/
        Object arrayAttr = request.getAttribute("array_data");
 
        List<Integer> valuesArray = (List<Integer>) arrayAttr;//преобразуем полученный массив в объект.
 
        out.println("<h1>Текущий массив чисел:</h1>");
        out.println(valuesArray.toString());//распечатываем значения объектов коллекции
 
        out.println("<br />");
        out.println("<br />");
        out.println("<h1>История массивов:</h1>");
 
        HttpSession session = request.getSession(); //получаем объект текущей сессии
 
 
 
        List<List<Integer>> arrayHistory;
        arrayHistory = (List<List<Integer>>)session.getAttribute("array_history");
 
 
        /*разбираем коллекцию массивов и выводим на печать каждый элемент данной коллекци
        * Элемент в данной коллекции содержит массив целых значений*/
        for (List<Integer> array : arrayHistory) {
            out.println("<li>");
            out.println(array.toString());
            out.println("</li>");
        }
 
        out.println("<br />");
        out.println("<br />");
        out.println("<h1>История доступа:</h1>");
 
        ServletContext context = request.getServletContext();//получаем контекст веб-приложения
 
        List<String> accessHistory;
        accessHistory = (List<String>)context.getAttribute("access_history");
        /*Разбираем коллекцию историии доступа к веб-прилежени.*/
        for (String access : accessHistory) {
            out.println("<li>");
            out.println(access);
            out.println("</li>");
        }
 
        out.println("<br />");
        out.println("<br />");
        out.println("<a href='first.html'>Попробовать еще</a>"); //указали ссылку на вызов серлета №1
    }
}



Когда мы достаем карту атрибутов из request, то данные имеют тип Object и нужно преобразованию в нужный нам тип данных.

Но как можно упростить написание данной строчки

Java
1
2
        List<List<Integer>> arrayHistory;
        arrayHistory = (List<List<Integer>>)session.getAttribute("array_history");

Как от этого избавится?

Java
1
List<List<Integer>>
Можно ли разложить это на несколько строк, более понятных ?
В данном случае в карте атрибутов , в атрибуте "array_history", хранится массив коллекций, то есть каждая запись
в данном массиве -
Это коллекция с типом данных List<Integer>.

Соответственно данный массив помещается в отдельную коллекцию List, у которой тип данных List<List<Integer>>.
Может ли кто объяснить такую схему и можно ли преобразование типов попроще расписать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2018, 12:59
Ответы с готовыми решениями:

Как вывести число в Label (проблема при преобразовании типов)
Ребят я вообще немогу понять почему все так через одно место,мне очень не привычно. Я когда знакомился с C# все было намного проще. вот...

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

Ошибка при преобразовании типов
Добрый день! В программе требуется считать данные типа char из поля Edit, а затем перевести в тип byte. Вот кусок кода: ...

2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.05.2018, 13:40
Цитата Сообщение от masli Посмотреть сообщение
попроще
Пиши в БД
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
27.05.2018, 19:40  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Пиши в БД
Тогда пожалуйста переместите мою тему в Базы данных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2018, 19:40
Помогаю со студенческими работами здесь

Потеря точности при преобразовании типов
Дан фрагмент кода: double a = Convert.ToDouble(Console.ReadLine()); double b = Math.Truncate(a); int c =...

Странное поведение при преобразовании типов
Доброго времени суток! Помогал товарищу написать простенькую программу. Задача состояла в том, чтобы при введенном дробном числе...

Ошибка при преобразовании типов Integer и String
Выполняла задание с помощью JavaFX: сложить многочлены заданной степени, используя TextField и HashMap. Алгоритм программы удалось создать,...

Изменение значения указателя при преобразовании типов
Есть класс Child, унаследованный от класса Parent. Наследование обычное, а не множественное. И Parent, и Child имеют виртуальные функции....

Почему конструктор вызывается повторно при преобразовании типов?
В качестве примера предлагаю рассмотреть примерчик из учебника. В примере мы создаём класс, содержащий в качестве поля строку символов и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
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. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru