我看了網上的一些方案,但是要麼是對某一個已知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