我看了网上的一些方案,但是要么是对某一个已知bean的,要么用反射方法的,我这里引用了一个jar包,来查找属性值,jar包是commons-beanutils-1.9.3.jar,maven依赖的话,大家自行百度吧。 public static Map sortByProperty(Collection collection, String keyPropertyName) { //先创建返回的map,并输入所有key值 Map map = Maps.newConcurrentMap(); if (CollectionUtils.isNotEmpty(collection)) { Iterator var3 = collection.iterator(); while(var3.hasNext()) { Object obj = var3.next(); try { Collection collection1 = (Collection)map.get(PropertyUtils.getProperty(obj, keyPropertyName)); if(collection1==null){ collection1=Lists.newArrayList(); collection1.add(obj); map.put(PropertyUtils.getProperty(obj, keyPropertyName), collection1); }else { collection1.add(obj); } } catch (Exception e) { e.printStackTrace(); } } } return map; }
返回的map是<属性值类型,Collection >
还有一个小插曲,我的属性值不是String,是个Bean,只好重写了equals方法。
有问题不清楚的可以评论,我没及时查看的话,可以加我qq1213203348