如何将对象数组列表转换为主题映射,其中键和值是对象属性



我有一个对象数组列表,如下所示

List<Model> list= new ArrayList<Model>();

Model 对象有两个属性,其中两个属性都是整数。

  1. 编号
  2. 计数

现在我想将此数组列表转换为哈希映射,其中 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());
}

注意:如果listModel个实例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());
}

最新更新