Дан вот такой Json-файл. Как добавить в коллекцию простой элемент в курсе, а вот как в коллекцию сунуть коллекцию, да ещё и сортировать его по одному из элементов я не в силах.
{
"result": [
{
"hostid": "10106",
"host": "Yandex DNS",
"interfaces": [
{
"interfaceid": "9",
"ip": "77.88.8.8"
},
{
"interfaceid": "13",
"ip": "77.88.8.8"
}
]
},
{
"hostid": "10106",
"host": "Yandex DNS",
"interfaces": [
{
"interfaceid": "6",
"ip": "77.88.8.8"
},
]
}
}
}
Индекс коллекции должен совпадать со значением переменной interfaceid (это значение уникальное).
Тут две задачи.
Для решения первой задачи можно использовать Google GSON. Эта библиотека позволяет конвертировать JSON в Java-объекты и обратно. Кроме Google GSON существуют и другие библиотеки, такие как Jackson итд.
Для решения второй задачи создайте класс, который реализует интерфейс Comparator.
В этом классе реализуйте метод compare(T o1, T o2)
, который будет сравнивать два объекта из вашего JSON и возвращать 1
, если первый объект больше второго, 0
- если объекты равны и -1
если первый объект меньше второго.
После чего отсортируйте массив объектов, который вы получили из JSON с помощью вашего класса-компаратора, вызвав метод Collections.sort(list, comparator), где list - это ваш список объектов из JSON, а comparator - это ваша реализация интерфейса Comparator
.
Есть и другой способ вместо создания отдельного компаратора. Это объявление объектов, список которых вы генерируете из JSON как Comparable
. В таком случае вам надо будет реализовать в классе метод compareTo(T obj)
, который будет сравнивать текущий экземпляр класса с переданным в параметре (obj
). После чего вызываете метод Collections.sort(list), где list - это список объектов, полученных из JSON, в котором каждый объект реализует интерфейс Comparable
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На низком уровне нужно определить имя класса, который его используетВозможно ли это? Вижу решение в передаче имени в конструктор, но это мне...
Здравствуйте,допустим на этом сайте я хочу с помощью java нажать на кнопку-"Задать вопрос"По средствам чего это можно сделать и можно ли вообще?
Добрый день! Есть задача: выделять определенные дни цветамиОдин день я выделить цветом могу,а вот несколько