Итак, я все еще новичок в Java 8 и все еще пытаюсь соотнести API потоков с традиционной итерацией и коллекциями.
Итак, у меня есть список объекта «UserData», который имеет 3 свойства, список всех денормализованных данных.
public class UserData {
private String primaryAccountNumber;
private String subAccountNumber;
private String currency;
}
Пример входных данных будет выглядеть как
PrimaryAccNumber SubAccNumber Currency
PA00 US00 USD
PA01 US01 USD
PA01 US02 USD
PA02 EU00 EUR
PA03 EU01 EUR
PA04 CA00 CAD
PA04 CA01 CAD
null IN00 INR
null IN01 INR
Ожидаемый результат должен быть примерно таким:
USD -> PA00 -> [US00]
PA01 -> [US01,US02]
EUR -> PA02 -> [EU00]
-> PA03 -> [EU01]
CAD -> PA04 -> [CA00,CA01]
INR -> null (or dummykey)->[IN00,IN01]
Итак, я хочу, чтобы он был нормализован таким образом, чтобы результатом была карта с валютой, а значением должна быть другая карта с первичным счетом и значением со списком дополнительных счетов.
Map<String, Map<String,List<String>>> normalizedData = //logic
Я думал о том, чтобы сделать этот способ старой школы в основном
- Сортировка данных по валюте.
- Переберите список и поместите данные в Map (поскольку данные отсортированы
и пока я не получу дубликаты ключей начнут ставить
соответствующие данные (основной аккаунт на новой карте)
- Повторите описанный выше процесс в основном на уровне основного аккаунта и начните вводить дубликат ключа, соответствующий
данные значения (субсчета в объекте списка)
Что касается моего мыслительного процесса, мне нужно создать 2 списка списка (1 сортировка в валюте для первой итерации), 2-я сортировка в основной учетной записи для вложенной карты. Это кажется немного неэффективным, тогда я посмотрел на потоки, но не мог представить, как я могу их использовать, но любые указания или мысли были бы оценены.