如何在Dart中将List<String>转换为Map<String,String>?
将List转换为键值相同的Map<String,String>
下面是几种实用的实现方式,适配不同场景:
1. 基础循环实现(兼容所有Java版本)
这是最直观的写法,手动遍历列表并填充Map:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListToMapDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("name"); list.add("class"); list.add("age"); Map<String, String> map = new HashMap<>(); for (String item : list) { map.put(item, item); } // 输出结果: {name=name, class=class, age=age} System.out.println(map); } }
2. Java 8+ Stream API实现
用Stream的Collectors.toMap可以更简洁地完成转换:
import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListToMapStreamDemo { public static void main(String[] args) { List<String> list = List.of("name", "class", "age"); // 列表无重复元素时直接用 Map<String, String> map = list.stream() .collect(Collectors.toMap(item -> item, item -> item)); // 列表可能有重复元素时,添加合并规则避免抛出异常(示例保留旧值) Map<String, String> mapWithDuplicateHandle = list.stream() .collect(Collectors.toMap(item -> item, item -> item, (oldVal, newVal) -> oldVal)); System.out.println(map); } }
注意:如果列表存在重复元素,未指定合并规则的
toMap会抛出IllegalStateException,必须添加合并逻辑处理冲突。
3. Guava工具库实现
如果项目已引入Guava,可以用它的工具方法简化操作:
import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import java.util.List; public class ListToMapGuavaDemo { public static void main(String[] args) { List<String> list = List.of("name", "class", "age"); // 生成不可变Map ImmutableMap<String, String> immutableMap = ImmutableMap.copyOf(Maps.asMap(list, item -> item)); // 生成可变Map Map<String, String> mutableMap = Maps.toMap(list, item -> item); System.out.println(immutableMap); } }
内容的提问来源于stack exchange,提问作者dvijai
相关产品推荐
相关产品推荐

