我有一个对象数组列表,如下所示
List<Model> list= new ArrayList<Model>();
Model 对象有两个属性,其中两个属性都是整数。
- 编号
- 计数
现在我想将此数组列表转换为哈希映射,其中 id 是键,count 是值:
Map<Integer,Integer> convertedmap=new HashMap<Integer,Integer>();
感谢任何帮助?
迭代列表并在映射中为每个迭代的模型对象添加一个新元素:
Map<Integer,Integer> convertedmap = new HashMap<Integer,Integer>();
for (Model model : list){
convertedmap.put(model.getId(), model.getCount());
}
注意:如果list
有Model
个实例id
as 字段具有相同的值,则列表中具有相同 id 的最后一个实例将覆盖创建的映射中的先前实例。
你可以检查一下。
否则,您也可以使用 Java 8 的 Collectors.toMap()
方法来执行作业:
Map<Integer, Integer> convertedmap = list.stream().collect(
Collectors.toMap(Model::getId, Model::getCount));
它比经典循环迭代具有优势。
如果在映射中用作键的id
值在list
中具有重复的值,它将上升IllegalStateException : Duplicate key...
,而不是静默覆盖映射。
你可以用 for 循环来做到这一点。
List<Model> list= new ArrayList<Model>();
Map<Integer,Integer> convertedmap=new HashMap<Integer,Integer>();
for(int i=0;i<list.size();i++){
Model model = list.get(i);
convertedmap.put(model.getId(),model.getCount());
}
首先用合适的二传手/getter完成你的POJO类Model
然后您可以迭代整个 ArrayList list
并将值放在 Map convertedmap
中,如下所示:
Map<Integer,Integer> convertedmap=new HashMap<Integer,Integer>();
for (Model md : list) {
convertedmap.put(md.getId(), md.getCount());
}