Например, у меня есть два списка:
['a','b']
['1','2','3','4','5','6']
И у меня есть словарь:
Map<String, ArrayList> dict = new HashMap<String, ArrayList>();
Как мне записать в словарь элементы так, чтобы элемент первого списка был ключом, а три элемента второго списка были переменными этого ключа? То есть должно получиться вот что:
{a=['1','2','3'], b=['4','5','6']}
Попробуйте, например, так:
List<String> firstList = Arrays.asList("a", "b");
List<String> secondList = Arrays.asList("1", "2", "3", "4", "5", "6");
Map<String, List<String>> dict = new HashMap<>();
for (int i = 0; i < firstList.size(); i++) {
List<String> values = secondList.subList(i*3, (i+1)*3);
dict.put(firstList.get(i), values);
}
System.out.println(dict); //{a=[1, 2, 3], b=[4, 5, 6]}
Или с guava (все равно она всегда есть в CLASSPATH)
List<String> keys = Lists.newArrayList("a", "b");
List<String> vals = Lists.newArrayList("1", "2", "3", "4", "5", "6");
List<List<String>> partitionedVals = Lists.partition(vals, 3);
Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < keys.size(); i++) {
map.put(keys.get(i), partitionedVals.get(i));
}
System.out.println(map);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей