Nir*_*ari 1 java android list hashmap
我有一个对象列表.
例如>
groupId = 1 name = name1
groupId = 1 name = name2
groupId = 1 name = name3
groupId = 2 name = name4
List中的多个对象具有相同的值groupId.我需要创建具有相同对象的子列表groupId.我如何用Java做到这一点.
我的Inital想法是创造一个,HashMap<Integer,List<Object>>但我不确定groupIds进入的不确定值,这反过来让我不确定如何将对象与hashmap的键groupIds组合在一起groupId.
如果groupId将来不会改变或增加,我可以迭代原始列表并编写一个switch语句来创建所需的数组.
在Java 8,你可以使用的groupingBy收集器:
Map<String, List<MyObject>> map = list.stream()
.collect(Collectors.groupingBy(MyObject::getGroupId));
Run Code Online (Sandbox Code Playgroud)
我就是这样做的。我使用它是LinkedHashMap<K,V>因为我必须保留根据对象的优先级值属性排序的对象的顺序。
LinkedHashMap<Group, List<Object>> hashMap=new LinkedHashMap<Group, List<Object>>();
for(Object model:objects){
if(!hashMap.containsKey(model.getGroup())){
List<Object> list= new ArrayList<Object>();
list.add(model);
hashMap.put(Group,list);
}
else{
hashMap.get(model.getGroup()).add(model);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12248 次 |
| 最近记录: |