[英]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對象具有兩個屬性,其中兩個都是整數。
現在,我想將此數組列表轉換為哈希映射,其中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.