我有一个像下面的对象arraylist
List<Model> list= new ArrayList<Model>();
Model对象有两个属性,两个都是整数。
现在我想将这个arraylist转换为Hash Map,其中id是键,count是值:
Map<Integer,Integer> convertedmap=new HashMap<Integer,Integer>();
感谢任何帮助?
答案 0 :(得分:2)
迭代列表并在地图中为每个迭代的Model对象添加一个新元素:
Map<Integer,Integer> convertedmap = new HashMap<Integer,Integer>();
for (Model model : list){
convertedmap.put(model.getId(), model.getCount());
}
注意:如果list
具有Model
个id
字段的实例具有相同的值,则列表中具有相同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());
}