java8模拟grouby方法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                java8模拟grouby方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            public class ListUtils{/*** list 集合分組** @param list    待分組集合* @param groupBy 分組Key算法* @param <K>     分組Key類型* @param <V>     行數據類型* @return 分組后的Map集合*/public static <K, V> Map<K, List<V>> groupBy(List<V> list, GroupBy<K, V> groupBy) {return groupBy((Collection<V>) list, groupBy);}/*** list 集合分組** @param list    待分組集合* @param groupBy 分組Key算法* @param <K>     分組Key類型* @param <V>     行數據類型* @return 分組后的Map集合*/public static <K, V> Map<K, List<V>> groupBy(Collection<V> list, GroupBy<K, V> groupBy) {Map<K, List<V>> resultMap = new LinkedHashMap<K, List<V>>();for (V e : list) {K k = groupBy.groupBy(e);if (resultMap.containsKey(k)) {resultMap.get(k).add(e);} else {List<V> tmp = new LinkedList<V>();tmp.add(e);resultMap.put(k, tmp);}}return resultMap;}/*** List分組** @param <K> 返回分組Key* @param <V> 分組行*/public interface GroupBy<K, V> {K groupBy(V row);}
}
  
說明:
                        
                        
                        例子:
Map<String,List<Student>> resMap = ListUtils.groupBy(studentList,new ListUtils.GroupBy<String,Student>(){ @Override public String groupBy(Student row){ String ktrq = row.getKtrq(); String ktrqStr = ""; if(ktrq != null){ ktrqStr = ktrq.substring(0,4); } return ktrqStr; } });說明:
1.上述例子中,studentList 為學生集合別名,實體類為Student ,其中有個屬性為ktrq (開通日期); 
2. ktrq 在數據庫為date 類型,且實體類定義為字符串類型,格式為 YYYY-MM-DD,使用substring() 截取,得到對應的年份,然后按照年份分組,最后得到對應的Map集合;
轉載于:https://www.cnblogs.com/airycode/p/10435118.html
總結
以上是生活随笔為你收集整理的java8模拟grouby方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        