繁体   English   中英

如何将对象数组列表转换为哈希表,其中键和值是对象属性

[英]How to convert a object arraylist into a hashmap where key and value are the objects attributes

我有一个如下的对象arraylist

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

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

  1. ID
  2. 计数

现在,我想将此数组列表转换为哈希映射,其中id是键,count是值:

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

任何帮助表示赞赏吗?

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

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

当心:如果list具有作为id字段的id字段具有相同值的Model实例,则列表中具有相同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());
}

首先,使用适当的设置器/获取器完成POJO类Model ,然后可以迭代整个ArrayList list ,并将值放入Map convertedmap例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM