List 转 多层map
我想要把下面的list 转成map ,应该怎么去转
楼主查阅招聘网站的各个java程序员招聘要求性能优化这个词出现的频率很高,性能优化大方向应该是针对程序的时间复杂度与空间复杂度考虑。本着知其然知其所以然的思想,总结此篇list转map。
map中的性能优化方向应该本着map中的扩容机制去优化。map初始化大小为16,负载因子0.75, 阈(yu)值 =map大小*负载因子,(map中的key对应的hash值会占用一个Node数组位置),也就是当前map中的key超过12个就会将map的大小乘以2, 已经存进去的key对应的hash值会重新计算存放。所以当前业务场景key不会有很多不同的情况下直接考虑简单点方法即可。
时间复杂度与空间复杂度 取决于集合的大小(循环的次数)与map的扩容机制执行的次数(jvm垃圾回收,扩容时是建立新的map对象,将旧map容器中的数据重新放进新的容器中,旧的容器对象并不会马上被回收)
所以 key的多样性越多时间占用空间占用越大。
我可以通过递归函数将一个包含多个元素的List转换成多层级的Map结构。具体步骤如下:
具体代码如下(Java语言):
public Map<String, Object> listToMap(List<Object> list) {
// 新建一个空的Map结构作为结果集
Map<String, Object> result = new HashMap<>();
// 遍历List中的每个元素
for (Object item : list) {
// 获取该元素的值作为Map的key
String key = item.toString();
// 判断该元素是否为最后一个元素
if (item == list.get(list.size() - 1)) {
// 如果是,将该元素的值作为Map的value
result.put(key, item);
} else {
// 如果不是,递归调用函数,将下一个元素作为参数,并将该元素的值作为Map的value
List<Object> subList = (List<Object>) item;
result.put(key, listToMap(subList));
}
}
// 返回结果集
return result;
}
需要注意的问题有:
是什么样的map呢?key是id,value是对象?还是什么值