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

标签 java arraylist hashmap

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

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

模型对象有两个属性,两者都是整数。

  1. ID
  2. 计数

现在我想将这个数组列表转换为 HashMap ,其中 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 字段具有相同的值,则列表中具有相同 id 的最后一个实例将覆盖创建的 map 中以前的实例。

你可以检查一下。

此外,您还可以使用 Java 8 的 Collectors.toMap() 方法来执行该作业:

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

它比经典的循环迭代有优势。
如果 map 中用作键的 id 值在 list 中具有重复的值,则会引发 IllegalStateException : Duplicate key...而不是默默地覆盖 map 。

关于java - 如何将对象数组列表转换为 HashMap ,其中键和值是对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43343549/

相关文章:

data-structures - 符号表和 HashMap 数据结构的区别

Java PDF 操作和渲染

java - Android ArrayList 删除只是简单不起作用

java - 从 LinkedHashMap 构建有序的 JSON 字符串

java - foreach 循环中的 ConcurrentModificationException

用于参数化类型的 Java 迭代器

java - 如何更改 HashMap 内的链接列表?

java - Android 应用程序崩溃,这是代码

java - 响应头是如何设置的

datetime - Java日期在单个类中处理: store date,时间和时区