精华内容
下载资源
问答
  • 假定有一列实体类List list = UserServer.getList();去重,去除重复对象(每个属性的值都一样的),需要注意的是要先重写对象User的equals和hashCode方法List distinctList = list.stream().distinct().collect...

    假定有一列实体类对像

    List list = UserServer.getList();

    去重,去除重复对象(每个属性的值都一样的),需要注意的是要先重写对象User的equals和hashCode方法

    List distinctList = list.stream().distinct().collect(Collectors.toList());

    排序,按id升续排列,如果要降续则改成:(a, b) -> b.getId() - a.getId(); a和b都是变量名(可以按自己意愿取名字),都是list中的对象的实例

    List sortList = list.stream().sorted((a, b) -> a.getId() - b.getId()).collect(Collectors.toList());

    过滤,按照自己的需求来筛选list中的数据,比如我筛选出不及格的(小于60分)的人,t为实例

    List filterList = list.stream().filter(t -> t.getScore() < 60).collect(Collectors.toList());

    map, 提取对象中的某一元素,例子中我取的是每个人的name,注意list中类型对应,如果取的是id或者班级,就应该是integer类型

    List mapList = list.stream().map(t -> t.getName()).collect(Collectors.toList());

    统计,统计所有人分数的和, 主要我设置的分数属性是double类型的,所以用mapToDouble,如果是int类型的,则需要用mapToInt

    double sum = list.stream().mapToDouble(t -> t.getScore()).sum();

    int count = list.stream().mapToInt(t -> t.getId()).sum();

    分组, 按照字段中某个属性将list分组

    Map> map = list.stream().collect(Collectors.groupingBy(t -> t.getGrade()));

    System.out.println("按年级分组"+map);

    /*然后再对map处理,这样就方便取出自己要的数据*/

    for(Map.Entry> entry : map.entrySet()){

    System.out.println("key:"+entry.getKey());

    System.out.println("value:"+entry.getValue());

    }

    多重分组,先按年级分组,再按班级分组

    Map>> groupMap = list.stream().collect(Collectors.groupingBy(t -> t.getGrade(), Collectors.groupingBy(t -> t.getClasses())));

    System.out.println("按照年级再按班级分组:"+groupMap);

    System.out.println("取出一年级一班的list:"+groupMap.get(1).get(1));

    多重分组,一般多重分组后都是为了统计,比如说统计每个年级,每个班的总分数

    Map> sumMap = list.stream().collect(Collectors.groupingBy(t -> t.getGrade(), Collectors.groupingBy(t -> t.getClasses(), Collectors.summingDouble(t -> t.getScore()))));

    System.out.println(sumMap);

    System.out.println("取出一年级一班的总分:"+sumMap.get(1).get(1));

    stream是链式的,这些功能是可以一起使用的,例如:计算每个年级每个班的及格人数

    Map> integerMap = list.stream().filter(t -> t.getScore() >= 60).collect(Collectors.groupingBy(t -> t.getGrade(), Collectors.groupingBy(t -> t.getClasses(), Collectors.counting())));

    System.out.println("取出一年级一班及格人数:"+integerMap.get(1).get(1));

    展开全文
  • 一.对象类@Data@AllArgsConstructorpublic class User {private Integer age;...普通写法private List users =Arrays.asList(new User(20,"张三"),new User(18,"李四"),new User(20,"王五"));@Testpublic void...

    一.对象类

    @Data

    @AllArgsConstructor

    public class User {

    private Integer age;

    private String name;

    }

    二.普通写法

    private List users =Arrays.asList(new User(20,"张三"),new User(18,"李四"),new User(20,"王五"));

    @Test

    public void testGroup(){

    Map> userMap = new HashMap<>();

    users.forEach(user->{

    List users = userMap.get(user.getAge());

    if(users==null){

    users = new ArrayList<>();

    users.add(user);

    userMap.put(user.getAge(),users);

    }else{

    users.add(user);

    }

    });

    userMap.forEach((x,y)->{

    System.out.println(x+":"+y);

    });

    }

    三.java8 stream写法:

    @Test

    public void testGroup2(){

    Map> userMap = new HashMap<>();

    users.stream().collect(Collectors.groupingBy(User::getAge,Collectors.toList()))

    .forEach(userMap::put);

    userMap.forEach((x,y)->{

    System.out.println(x+":"+y);

    });

    }

    运行结果:

    af22eb2bbea939076de76b89fc141f3c.png

    二.List分组成List>,按照某一个属性

    List>users.stream().collect(

    Collectors.collectingAndThen(Collectors.groupingBy(User::getAge,Collectors.toList(),map->new ArrayList<>(map.values())))

    );

    展开全文
  • Java对list进行分组

    2020-07-30 11:48:26
    String, List<PlanOrg>>> planOrgMap = new HashMap<>(); planOrgList = planOrgList.stream().filter((PlanOrg PlanOrg) -> (StringUtils.isNotBlank(PlanOrg.getType())) ).collect...

    简单分组

    一、Collectors.groupingBy

    注意:key不能为空

    Map<String, List<BaseManage>> baseManageMap = 
    baseManageList.stream().collect(
    Collectors.groupingBy(BaseManage::getPersonId)
    );
    

    参考资料

    二、Maps.uniqueIndex

    //若name对应了多条记录,会报错
    Map<String, Fruit> map = Maps.uniqueIndex(
    fruitList, Fruit::getName);
    

    若name对应了多条记录,会报错,报错信息如下:

    在这里插入图片描述

    多重分组

     Map<String, Map<String, List<PlanOrg>>> planOrgMap = new HashMap<>();
    
            List<PlanOrg> planOrgList = new ArrayList<>();
            planOrgList.stream().filter((PlanOrg planOrg) -> (StringUtils.isNotBlank(planOrg.getType()))
            ).collect(Collectors.toList());
    
            planOrgList.stream().collect(Collectors.groupingBy(PlanOrg::getType)).
                    forEach((type, list2) -> {
                        Map<String, List<PlanOrg>> planOrgMap_tmp = list2.stream().collect(
                                Collectors.groupingBy(PlanOrg::getPlanOrgId)
                        );
                        planOrgMap.put(type, planOrgMap_tmp);
    
    });
    

    参考地址

    展开全文
  • java对list集合分组

    千次阅读 2014-07-09 15:09:23
    * 请求的list数据进行处理,每组showSize个 * @return */ private void getData(List urlData){ List> lists = new ArrayList>();  List temp = new ArrayList();  for(int i= 0 ;i  
    /**


    * 对请求的list数据进行处理,每组showSize个
    * @return
    */
    private List<List<String>>  getData(List<String> urlData){
    List<List<String>> lists = new ArrayList<List<String>>();
           List<String> temp = new ArrayList<String>();
           for(int i= 0 ;i<urlData.size();i++){
            if(i%showSize==0){
            if(!temp.isEmpty()){
            lists.add(temp);
            }
            temp =  new ArrayList<String>();
            temp.add(urlData.get(i));
            }else{
            temp.add(urlData.get(i));
            }
           }
           if(!temp.isEmpty()){
            lists.add(temp);
           }
         return lists ;

    }

    比如说list集合里有{”a“,"b","c","d","e","f","g","h","i","j"}这么多元素,每3个一组,经过上面的方法执行后,lists中将会是{{"a","b","c"},{"d","e","f"},{"g","h","i"},{"j"}},分成了四组,其中上面方法中的showSize即是每几个分成一组。



    展开全文
  • 1. 跟据某个属性分组OfficeId:Map> collect = list.stream().collect(Collectors.groupingBy...2. 根据某个属性分组OfficeId,汇总某个属性Money:Map collect = list.stream().collect(Collectors.groupingBy...
  • importjava.util.ArrayList;importjava.util.HashMap;importjava.util.HashSet;...importjava.util.List;importjava.util.Map;importjava.util.Set;public classListSort {/*** 按照List>里面m...
  • 有时候集合类型json数据,需要进一步按照类型进行分组加工,下面提供两种分组方式。二、HashMap遍历分组分组代码:{............//定义分组集合Mapprivate Map> groupMap = new HashMap<>();//遍历原始数据...
  • java8特性中我们可以使用stream流很方便的集合进行操作下面将以两种方式进行分组操作(java8中还有其他操作可以分组,这里只介绍两种,其他方式大同小异)list 分组归类代码import com.alibaba.fastj...
  • public classGamer47 {public static voidmain(String[] args) {//将List变成一个mapmergeListmapToOnemap(null);//将两个List合并成一个List,“name”为map的...//对List分组统计summaryGr...
  • java list分组操作

    2019-12-31 08:58:43
    list分组操作 Guava包提供了对list进行分组操作的方法 Lists.partition(List<T> list, int size)。 目的: 将 list 按照指定的长度进行分割,返回一个新的List<List>集合。 举例: public static ...
  • JAVA8 对List分组同时排好序

    千次阅读 2018-10-09 14:30:56
    public ResponseStatus ... List&lt;FkRule&gt; fkRuleList = fkRuleRepository.findAllByFsIdAndStatusIsNotOrderBySort(fsId, -1);  //查询列表规则编号分组同时排好序,根据实体FkRule 的code分组...
  • 有时候,我们需要将大的集合按指定的数量分割成若干个小集合...更新于2017年:其实Guava库有个已有的方法实现此需求:Lists.partition(Listlist, int size)v2,更新于2016-01-20v1的代码使用后发现有问题,如果分...
  • java list分组聚合

    千次阅读 2020-02-22 21:40:54
    1. 只某个属性分组 (personsList为存储实体类的集合) group by age Map<Integer,List<Person>> map = personsList.stream().collect(Collectors.groupingBy(Person::getAge)); 结果: 2.先分组,再...
  • java8对List进行分组

    2020-11-25 16:27:41
    1.bean对象demo ... import lombok.AllArgsConstructor;...import java.io.Serializable; /** * @date: 2020/11/25 0025 16:19 **/ @Data @AllArgsConstructor @NoArgsConstructor public class
  • java基础之使用Stream对List分组

    千次阅读 2018-10-04 11:48:10
    //根据某一字段进行分组 Map&lt;String,List&lt;PubTypeAndLevel&gt;&gt; groupBy=pubTypeAndLevelList.stream().collect(Collectors.groupingBy(PubTypeAndLevel::getName))...
  • importjava.util.ArrayList;importjava.util.HashMap;importjava.util.HashSet;...importjava.util.List;importjava.util.Map;importjava.util.Set;public classListSort {/*** 按照List>里面m...
  • java通过Stream对list集合分组 现在有一个List集合,想对该集合中的数据分组处理,想到java8中的stream,就搞来试试,非常给力!例子如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
  • lodash提供来一套完整的APIJS对象(Array,Object,Collection等)进行操作,这其中就包括_.groupBy 和 _.reduce,即分组和'聚合'(reduce不知道该怎么翻译合适)。使用这些‘野生’的API能够极大的提高我本人编写JS代码...
  • 查找ArrayList中的重复的String,然后将string...for(Strings:sources){if(Collections.frequency(reslut,s)}怎么样一个list中的对象通过对象中相同属性进行分组,放到map中用于页面显示分享| 2011-08-10 20:04 s...
  • Java8 Stream groupingBy对List进行分组

    万次阅读 多人点赞 2018-11-03 14:37:04
    提到Group By,首先想到的往往是sql中的group by操作,搜索结果进行分组。其实Java8 Streams API中的Collector也支持流中的数据进行分组和分区操作,...首先看一下Java8之前如果想一个List分组操作,我们需要...
  • try {List timelist = DateUtils.getDateListBySETime("2015-08-01", "2015-11-30");if(timelist!=null&&timelist.size()>0){int SIZE = 10;int page = (timelist.size() + SIZE - 1)/SIZE;List newtimel...
  • 对List进行分组java8的Stream 分组的groupBy 的使用) 最近在做一个功能:对一个接口接收的List数据进行校验,同一个订单里的一个产品id只能添加一次。本来想是在入库的时候通过SQL语句进行处理的。但是由于这个...
  • 对List进行排序,有两种办法 第一个是用java提供的工具类Collections提供的sort方法进行排序 废话不多说,上代码 首先定义一个Student public class Student { private int age; private String name; ...
  • Map, List<Record>> collect = recordService.stream().collect(Collectors.groupingBy( record -> new Record(record.getPartnerId(), record.getPaymentItemId())));   转载于:...
  • public static Map>> transition(List> list){Map>>...// 分组for(Map temp : list) {// 获取Map的每一对值Iterator> iterator = temp.entrySet().iterator();while (iterator.h...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 553
精华内容 221
关键字:

java对list分组

java 订阅