如何将对象arraylist转换为hashmap,其中key和value是对象属性

时间:2017-04-11 10:35:48

标签: java arraylist hashmap

我有一个像下面的对象arraylist

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

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

  1. id
  2. 计数
  3. 现在我想将这个arraylist转换为Hash Map,其中id是键,count是值:

    Map<Integer,Integer> convertedmap=new  HashMap<Integer,Integer>();
    

    感谢任何帮助?

3 个答案:

答案 0 :(得分:2)

迭代列表并在地图中为每个迭代的Model对象添加一个新元素:

Map<Integer,Integer> convertedmap = new  HashMap<Integer,Integer>();
for (Model model : list){
   convertedmap.put(model.getId(), model.getCount());
}

注意:如果list具有Modelid字段的实例具有相同的值,则列表中具有相同ID的最后一个实例将覆盖之前的实例。创建了地图。

你可以检查一下。

否则,您还可以使用Java 8的Collectors.toMap()方法执行作业:

Map<Integer, Integer> convertedmap = list.stream().collect(
                Collectors.toMap(Model::getId, Model::getCount));

它优于传统的循环迭代 如果地图中用作关键字的id值在list中具有重复值,则会上升IllegalStateException : Duplicate key...而不是以静默方式覆盖地图。

答案 1 :(得分:0)

您可以使用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());
}

答案 2 :(得分:0)

首先用适当的setter / getters完成你的POJO课程Model 您可以迭代整个ArrayList list并将值放在Map convertedmap中,如:

Map<Integer,Integer> convertedmap=new  HashMap<Integer,Integer>();

for (Model md : list) {
   convertedmap.put(md.getId(), md.getCount());
}