/** * @Description: 分组工具类 * * @Author: hepengfei * @Date: 15:43 2018/3/20 */public class GroupUtils { /** * eg: * List list = devider(list, (Apple o1, Apple o2) -> { * return o1.getWeight() == o2.getWeight() ?0 : 1; * }); * @param datas 带分组的list * @param c * @param* @return */ public static List
> devider(Collection datas, Comparator c){ List
> result = new ArrayList
>(); for (T t : datas) { boolean isSame = false; for (int i=0;i innerList = new ArrayList (); result.add(innerList); innerList.add(t); } } return result; } /** demo */ public void test(List list){ List devider = devider(list, (Apple o1, Apple o2) -> { return o1.getWeight() == o2.getWeight() ?0 : 1; }); System.out.println(devider); } class Apple{ private int weight; public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } }}
2.Comparable,Comparator
Comparable是为了对某个类的集合进行排序,所以此时一般都是这个需要排序的类本身去实现Comparable接口;倘若我们要根据其他规则排序,可以匿名内部类或者lambda表达式使用Comparator接口: list.sort(Comparator.comparing(Employee::getSalary).thenComparing(Employee::getName));