分类问题
在公司实际开发中非常常见的一类数据处理问题
例子:🌰
现有一个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.