分类问题

在公司实际开发中非常常见的一类数据处理问题

例子:🌰

现有一个List集合X
X中的每个元素为一个对象,此对象中包含多个属性:A、B、C等
现在需要将List集合X中元素按照对象中的某个或某些属性分组。

Map的解决方案:

原理为,Map的key值是唯一的,因此我们就可以把key作为分组的唯一依据
将分组的条件作为Map的Key值即可,实现起来也非常简单:

/*原数据List*/
List<Object> list = new ArrayList<>();
/*新建一个map来存放分组后的数据,一个键值对就是一组*/
HashMap<String, List<Object>> xMap = new HashMap<>();
for (Object o : list) {
    /*将对象中的条件组合成唯一key*/
    String key = o.getA() + o.getB();
    if (xMap.containsKey(key)) {
        xMap.get(key).add(o);
    } else {
        List<Object> newList = new ArrayList<>();
        newList.add(o);
        xMap.put(key,newList);
    }
}

Map的遍历

常用的是 EntrySet

因为可以同时获取到key和value

for(Map.Entry<String, List<Object>> entry : xMap.entrySet()){
    String key = entry.getKey();
    List<Object> value = entry.getValue();
}

Q.E.D.


ALL WILL BE CLEAR