Map<String, List<>>转List<List<>>且均匀分配,List大小是20
时间: 2023-10-14 10:31:23 浏览: 82
假设原始的Map<String, List<T>>为 map,其中每个String对应的List大小不一。
首先,我们需要计算出最终的List<List<T>>中每个List的大小,假设为size。由于需要均匀分配,那么size应该为所有String对应的List的大小的平均值(向下取整)。
接下来,我们可以使用一个循环将原始的Map<String, List<T>>转化为List<List<T>>。具体步骤如下:
1. 首先计算出size。
```java
int size = 20;
int totalSize = 0;
for (List<T> list : map.values()) {
totalSize += list.size();
}
size = totalSize / map.size();
```
2. 然后循环处理每个String对应的List,将它们均匀分配到List<List<T>>中。
```java
List<List<T>> result = new ArrayList<>();
List<T> temp = new ArrayList<>();
int count = 0;
for (List<T> list : map.values()) {
for (T item : list) {
temp.add(item);
count++;
if (count == size) {
result.add(temp);
temp = new ArrayList<>();
count = 0;
}
}
}
if (!temp.isEmpty()) {
result.add(temp);
}
```
这样就可以将原始的Map<String, List<T>>转化为List<List<T>>并且均匀分配,List大小为20。
阅读全文