簡體   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