Список списков списков на карте плоской карты списковJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Список списков списков на карте плоской карты списков

Сообщение Anonymous »

У меня есть списки (штаты) списков (городов) списков (городов). Как мне сгладить средний список (города) и преобразовать его в карту (название штата) карты (название города) списков (городов)?
Этот вопрос может выглядеть аналогично другому вопрос: вложенный список Java 3-го уровня и вложенная карта 3-го уровня, но они не совпадают. Мне нужно сгладить один из списков.

Код: Выделить всё

import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Data
@AllArgsConstructor
class Country {
private String name;
private List states;
}

@Data
@AllArgsConstructor
class State {
private String name;
private List cities;
}

@Data
@AllArgsConstructor
class City {
private String name;
private List towns;
}

@Data
@AllArgsConstructor
class Town {
private String name;
private String address;
private Integer population;
}

public static void main(String[]args) {
List countryAStateACityATownsList = new ArrayList();
countryAStateACityATownsList.add(new Town("CountryA-StateA-CityA-TownA", "addressOfCountryA-StateA-CityA-TownA", 100));
countryAStateACityATownsList.add(new Town("CountryA-StateA-CityA-TownB", "addressOfCountryA-StateA-CityA-TownB", 100));
countryAStateACityATownsList.add(new Town("CountryA-StateA-CityA-TownC", "addressOfCountryA-StateA-CityA-TownC", 100));

List countryAStateACityBTownsList = new ArrayList();
countryAStateACityBTownsList.add(new Town("CountryA-StateA-CityB-TownA", "addressOfCountryA-StateA-CityB-TownA", 100));
countryAStateACityBTownsList.add(new Town("CountryA-StateA-CityB-TownB", "addressOfCountryA-StateA-CityB-TownB", 100));
countryAStateACityBTownsList.add(new Town("CountryA-StateA-CityB-TownC", "addressOfCountryA-StateA-CityB-TownC", 100));

List countryAStateACityCTownsList = new ArrayList();
countryAStateACityCTownsList.add(new Town("CountryA-StateA-CityC-TownA", "addressOfCountryA-StateA-CityC-TownA", 100));
countryAStateACityCTownsList.add(new Town("CountryA-StateA-CityC-TownB", "addressOfCountryA-StateA-CityC-TownB", 100));
countryAStateACityCTownsList.add(new Town("CountryA-StateA-CityC-TownC", "addressOfCountryA-StateA-CityC-TownC", 100));

City cityA = new City("cityA", countryAStateACityATownsList);
City cityB = new City("cityB", countryAStateACityBTownsList);
City cityC = new City("cityC", countryAStateACityCTownsList);

List countryAStateACitiesList = new ArrayList();
countryAStateACitiesList.add(cityA);
countryAStateACitiesList.add(cityB);
countryAStateACitiesList.add(cityC);

State stateA = new State("stateA",countryAStateACitiesList);

Country countryA = new Country("countryA", Collections.singletonList(stateA));

}

}
Мне нужна карта городов и штатов. (поэтому список городов выравнивается):
state.name -> Town.name -> city.
Я хочу сделать что-то вроде DestinationMap.get("stateA").get("CountryA-StateA- CityA-TownA"), и это даст мне экземпляр города с именем "CountryA-StateA-CityA-TownA".
Пожалуйста, помогите, я пытался сделать это с помощью поток, но не пока могу.
Я пробовал это:

Код: Выделить всё

        countryA.getStates()
.stream()
.collect(Collectors.toMap(State::getName,
st-> st.getCities()
.stream()
.collect(Collectors.toMap(City::getName,
City::getTowns))));
При этом создается карта state.name, city.name и городов. Но это не то, что мне нужно.
Изображение

Мне нужна карта от state.name до Town.name и города с таким же названием.

Подробнее здесь: https://stackoverflow.com/questions/676 ... p-of-lists
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spring Webflux: альтернатива вложенной плоской карте
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Объединение пучки плоской карты pvalue.asdict и pvalue.aslist
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Объединение пучки плоской карты pvalue.asdict и pvalue.aslist
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Добавление указателей на ключи на карте на карте
    Anonymous » » в форуме C++
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • Как сгруппировать список списков в новый список на основе начального символа одного из элементов в одном из списков
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»