精华内容
下载资源
问答
  • List的数据进行分组

    千次阅读 2019-12-31 15:45:36
    :我们平常在工作的时候可能会遇到要List里面的数据进行分组在jdk1.8有方法帮我们解决,而在1.8之前我们要实现这样的功能就需要自己手动实现分组 我们先定义个User类 public class User { private int id; ...

    对List的数据进行分组

    一:我们平常在工作的时候可能会遇到要对List里面的数据进行分组,在jdk1.8中有方法帮我们解决,而在1.8之前我们要实现这样的功能就需要自己手动实现分组

    我们先定义一个User类

    public class User {
        private int id;
        private String contractName;
    
        public User(int id, String contractName) {
            this.id = id;
            this.contractName = contractName;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getContractName() {
            return contractName;
        }
    
        public void setContractName(String contractName) {
            this.contractName = contractName;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", contractName='" + contractName + '\'' +
                    '}';
        }
    }
    

    我们先实现自定义List数据分组

    public static List<User> listDataSort(List<User> list){
            List<User> transformList=new ArrayList<User>();
            //创建一个map,来让list分组把一个List<User>分成多个List<User>
            Map<Integer,List<User>> map=new HashMap<Integer,List<User>>();
            //遍历传进来的list
            for (User user : list) {
                //如果map的某个key值已经存在同样的userId,则把这个user添加到这个key所在的List<User>
                if(map.containsKey(user.getId())){
                    map.get(user.getId()).add(user);
                }
                else{
                    //如果没有相同的id,就新创建一个List
                    List<User> newList=new ArrayList<User>();
                    //添加数据
                    newList.add(user);
                    map.put(user.getId(),newList);
                }
            }
            /*
            把Map转换成List<List<User>>,为什么会变成List<List<User>>,原因在于
            map是以多个userId为键值,存储多个List<User>,map.values转换成list就会变成
            List<List<User>>
             */
            List<List<User>> lists=new ArrayList<List<User>>(map.values());
            //遍历lists
            for (List<User> users : lists) {
                for (User user : users) {
                    //现在添加进来的User都是分好组的
                    transformList.add(user);
                }
            }
            return transformList;
        }
    

    进行测试

    public static void main(String[] args) {
            List<User> list=new ArrayList<User>();
            list.add(new User(1,"一号合同"));
            list.add(new User(2,"一号合同"));
            list.add(new User(1,"二号合同"));
            list.add(new User(3,"一号合同"));
            list.add(new User(3,"二号合同"));
            list.add(new User(2,"二号合同"));
            System.out.println("分组前:"+list);
            System.out.println("分组后:"+listDataSort(list));
        }
    

    在这里插入图片描述

    利用jdk1.8的新方法进行分组

    public static List<User> groupList(List<User> users) {
            List<User> transformList=new ArrayList<User>();
            //创建一个List<List<User>>来接收工具排序后遍历出来的多个List<User>
            List<List<User>> lists=new ArrayList<List<User>>();
            //jdk1.8新增加的List.stream(),利用流来操作
            /*
            * stream()是把List转换成流
            * collect()是把流转换回集合
            * Collectors.groupingBy()对collect进行分组
            * User::getId,根据User对象的getId进行分组
            * Collectors.toList() 把每一组转换成List集合
            * forEach() 进行遍历,内部自定义方法 () -> {} 这是lambada表达式,遍历出每个List<User>
            * 把每个List<User>放进lists
            * forEach里面的id 可以写成任何字符串,比如s aa,bb等,
            * 因为我们是根据id分组的,所以写成id,usersById也可以写成任何值,
            * 比如s aa,bb等,lambada是自动填充数据的
            * */
            users.stream().collect(Collectors.groupingBy(User::getId,Collectors.toList()))
                    .forEach((id,usersById) -> {
                        lists.add(usersById);
                    });
            if(lists!=null){
                for (List<User> list : lists) {
                    for (User user : list) {
                        transformList.add(user);
                    }
                }
            }
            return transformList;
        }
    

    进行测试

    public static void main(String[] args) {
            List<User> list=new ArrayList<User>();
            list.add(new User(1,"一号合同"));
            list.add(new User(2,"一号合同"));
            list.add(new User(1,"二号合同"));
            list.add(new User(3,"一号合同"));
            list.add(new User(3,"二号合同"));
            list.add(new User(2,"二号合同"));
            System.out.println("分组前:"+list);
            System.out.println("分组后:"+groupList(list));
        }
    

    在这里插入图片描述
    ``

    展开全文
  • 根据某字段对数据进行分组统计

    千次阅读 2019-01-17 09:30:31
    如何根据某字段对数据进行分组统计? 在项目要求中要求实现此页面功能 在这里要求统计公司20GP,40GP,40HC的柜量和TEU情况, 下面是我实现此功能的页面 啊啊,页面设计不好看,虽然实现的内容与要求的有些许...

    如何根据某一字段对数据进行分组统计?
    在项目要求中要求实现此页面功能
    在这里要求统计公司20GP,40GP,40HC的柜量和TEU情况,
    在这里插入图片描述
    下面是我实现此功能的页面
    在这里插入图片描述
    啊啊,页面设计不好看,虽然实现的内容与要求的有些许差异,但是分组查询统计的功能是实现了
    下面是我经过思考编写的代码(在这里引用了BsgridPage)

    // An highlighted block
    public ActionResult Statistics(BsgridPage bsgridPage, int EntrustID, string WorkNumber, string StarDate, string EndDate,
                 int PretendHarborID, int PurposeID, string ShipID, string ShipNext)//柜型柜量统计
            {
                #region
                try
                {
                    var lisqtem = (from tbSetBox in myModels.SYS_Setbox
                                       //group by分组
                                       //group tbSetBox by tbSetBox.ShipcompanyID into tbShipcommanpay 
                                       //表示对tbSetBox按ShipcompanyID字段归类,其结果命名为tbShipcommanpay 
                                       //一旦重新命名,tbSetBox的作用域就结束了,所以,最后select时,
                                   group tbSetBox by tbSetBox.ShipcompanyID into tbShipcommanpay
                                   select new
                                   {
                                       ShipcompanyID = tbShipcommanpay.Key,//接口提供一个属性 Key ,返回进行分组的关键字段的值
                                       TEU = tbShipcommanpay.Select(m => m.TEU),
                                       Score20GP = tbShipcommanpay.Where(m => m.Boxmodel == "20GP"),
                                       Score40GP = tbShipcommanpay.Where(m => m.Boxmodel == "40GP"),
                                       Score40HC = tbShipcommanpay.Where(m => m.Boxmodel == "40HC"),
                                   }).ToList();
    
                    var linqteml = (from tbSetBox in lisqtem
                                    join tbShipcompany in myModels.SYS_Shipcompany on tbSetBox.ShipcompanyID equals tbShipcompany.ShipcompanyID
                                    join tbShip in myModels.SYS_Ship on tbShipcompany.ShipID equals tbShip.ShipID
                                    join tbWorkNumber in myModels.SYS_WorkNumber on tbShip.WorkNumberID equals tbWorkNumber.WorkNumberID
                                    join tbEntrust in myModels.SYS_Entrust on tbShip.EntrustID equals tbEntrust.EntrustID
                                    orderby tbSetBox.ShipcompanyID descending
                                    select new SetBoxVo
                                    {
                                        ShipcompanyID = tbShipcompany.ShipcompanyID,
                                        ShipName = tbShip.ShipName,
                                        ShipcompanyMC = tbShipcompany.ShipcompanyMC,
                                        Score20GP = tbSetBox.Score20GP.Count(),
                                        Score40GP = tbSetBox.Score40GP.Count(),
                                        Score40HC = tbSetBox.Score40HC.Count(),
                                        TEU = tbSetBox.TEU.Count(),
                                        Date = tbShip.DateShip.ToString(),
                                        DateShip = tbShip.DateShip,
                                        WorkNumber = tbWorkNumber.WorkNumber,
                                        EntrustMC = tbEntrust.EntrustMC,
                                        ShipNext = tbShip.ShipNext,
                                        EntrustID = tbEntrust.EntrustID,
                                        ShipID = tbShip.ShipID,
                                    }).ToList();
                    if (EntrustID > 0)
                    {
                        linqteml = linqteml.Where(m => m.EntrustID == EntrustID).ToList();
                    }
                    if (PretendHarborID > 0)
                    {
                        linqteml = linqteml.Where(m => m.PretendHarborID == PretendHarborID).ToList();
                    }
                    if (!string.IsNullOrEmpty(ShipID))
                    {
                        linqteml = linqteml.Where(m => m.ShipName.Contains(ShipID)).ToList();
                    }
                    if (PurposeID > 0)
                    {
                        linqteml = linqteml.Where(m => m.PurposeID == PurposeID).ToList();
                    }
                    if (!string.IsNullOrEmpty(WorkNumber))
                    {
                        linqteml = linqteml.Where(m => m.WorkNumber.Contains(WorkNumber)).ToList();
                    }
                    if (!string.IsNullOrEmpty(ShipNext))
                    {
                        linqteml = linqteml.Where(m => m.ShipNext.Contains(ShipNext)).ToList();
                    }
                    if (!string.IsNullOrEmpty(StarDate) && !string.IsNullOrEmpty(EndDate))
                    {
                        DateTime starDate = Convert.ToDateTime(StarDate);
                        DateTime endDate = Convert.ToDateTime(EndDate);
                        linqteml = linqteml.Where(m => m.DateShip >= starDate && m.DateShip <= endDate).ToList();
                    }
                    int totals = linqteml.Count();
                    List<SetBoxVo> listSet = linqteml
                        .Skip(bsgridPage.GetStartIndex())
                        .Take(bsgridPage.pageSize).ToList();
                    Bsgrid<SetBoxVo> bsgrid = new Bsgrid<SetBoxVo>
                    {
                        success = true,
                        totalRows = totals,
                        curPage = bsgridPage.curPage,
                        data = listSet
                    };
                    return Json(bsgrid, JsonRequestBehavior.AllowGet);
                    #endregion
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
                return Json("", JsonRequestBehavior.AllowGet);
            }
    
    展开全文
  • 先给excel添加开发工具及宏的设置。 ... 在Excel选项的常用页里“在功能区显示开发工具选项卡”打勾; ... 选宏设置项,里面选择“启用所有宏”;...然后点击Visual Basic 进行写代码: 最后点击运行就可以了。

    先给excel添加开发工具及宏的设置。

    先点击excel的office按钮,在菜单的右下角选“Excel选项”;

    在Excel选项的常用页里“在功能区显示开发工具选项卡”打勾;

    再点击信任中心里的“信任中心设置”;

    选宏设置项,里面选择“启用所有宏”;

    设置完后就会在excel工具栏显示如图:


    然后点击Visual Basic 进行写代码:


    最后点击运行就可以了。


    展开全文
  • JS对数据进行分组

    千次阅读 2019-12-13 11:02:35
    分组数据类型:包含n多个对象的数据 代码示例: let data = [ { key: 'xxx', name: 'yiyi', age: 12, money: 10 }, { key: 'sss', name: 'iii', age: 13, money: 100 }, { key: 'ddd', name: 'ooo', age: 13...

    被分组数据类型:包含n多个对象的数据

    代码示例:

    let data = [
        { key: 'xxx', name: 'yiyi', age: 12, money: 10 },
        { key: 'sss', name: 'iii', age: 13, money: 100 },
        { key: 'ddd', name: 'ooo', age: 13, money: 50 },
        { key: 'sss', name: 'mmm', age: 50, money: 90 },
        { key: 'ddd', name: '888', age: 13, money: 88 },
        { key: 'aaa', name: 'qqq', age: 30, money: 78 },
        { key: 'aaa', name: 'qqq', age: 13, money: 32 },
        { key: 'xxx', name: 'heh', age: 13, money: 95 },
        { key: 'sss', name: 'rtt', age: 15, money: 456 },
        { key: 'xxx', name: 'opp', age: 15, money: 91 },
        { key: 'ddd', name: 'gun', age: 19, money: 66 },
    ];
    
    //data是要被分组的数据[],key是分组依据的关键字
    let getGroup=(data,key)=>{
        let groups={};
        data.forEach(c=>{
            let value=c[key];
            groups[value]=groups[value]||[];
            groups[value].push(c);
        });
        return groups;
    }
    
    console.log(getGroup(data,'key'))

    调用这个getGroup方法得到的结果就是

    {
        aaa:[
            {key: "aaa", name: "qqq", age: 30, money: 78},
            {key: "aaa", name: "qqq", age: 13, money: 32}
        ],
        ddd:[
            {key: "ddd", name: "ooo", age: 13, money: 50},
            {key: "ddd", name: "888", age: 13, money: 88},
            {key: "ddd", name: "gun", age: 19, money: 66}
        ],
        sss:[
            {key: "sss", name: "iii", age: 13, money: 100},
            {key: "sss", name: "mmm", age: 50, money: 90},
            {key: "sss", name: "rtt", age: 15, money: 456}
        ],
        xxx:[
            {key: "xxx", name: "yiyi", age: 12, money: 10}
            {key: "xxx", name: "heh", age: 13, money: 95}
            {key: "xxx", name: "opp", age: 15, money: 91}
        ]
    }

    这样同一组数据就在一个对象属性里面了,可以愉快的开始使用分组后的数据了

    展开全文
  • 数据进行分组排序后取每条记录  Sql代码 SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY  ORDER BY  DESC) LEV, <hx_amass_liquid>.* FROM ) WHERE LEV = 1 ...
  • 记录数据分组的方法: String groupCondition = "#";//"#"代表你查询实体类所对应数据库的属性名 List&lt;Map&gt; list = *Service.queryBy*();//根据某种条件查询处理的数据集 ...
  • 项目开发中的分组排序需求:,要求取出按field1分组后,并在每中按照field2排序;二,要求取出field1中已经分组排序好的前多少行的数据。如下有三个函数可以根据需求选择使用,这里通过一张表的示例和SQL语句...
  • Oracle 分组后,对组数据进行排序

    千次阅读 2017-06-14 11:21:06
    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每内部排序后的顺序编号(内连续的唯一的)。 参考: ...
  • 如图,数据库查出来的数据: ...stream里面只有按个属性分组的,但是可以利用string简单变换一下: List<JsonObject> list = goodsList.getList(); Map<String, List<JsonObject>&...
  • 使用场景:项目中有个选择法律依据的地方 列表是多选的 《安全法》第条 《安全法》第十条 ... // 数据源 List<BeanRespGetLaw.Law> lawList = data.getParcelableArrayListExtra("model")...
  • R 对分组数据进行排序

    千次阅读 2018-03-26 20:19:54
    朋友要给以月为单位的时间序列数据分组然后按其中个feature再进行排序。链家的个面试题也要求对一个地区的数据进行分组然后排序。于是研究了一下怎么弄。数据使用R内建的数据集 ChickWeight&gt; data=...
  • oracle 分组后取每数据

    千次阅读 2017-05-25 15:20:10
    因为项目中需要将结果集中的相同分组中的数据内...主要思路就是根据不同分组创建个字段进行组内排序,PARTITION BY 是按照某字段分组,例子如下: 数据格式 分组取第条的效果 sql  
  • DAX实战小例:对数据进行分组分析 1

    千次阅读 2018-03-27 10:45:15
    介绍使用DAX对数据分类计算的情况。
  • 1、需求分析 将数据使用group by 分组,某个字段既有null值,又有''值,想将这两种数据都分为类命名为other。2、mysql语句 select count(id) total, case name when '' then 'other' else ifnull(name ,'...
  • MySQL对数据进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下: GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP] 属性...
  • 使用mongo的.aggregate方法, 类似个聚合流水线的个过程, 可以理解为文档经过多次管道阶段最后生成的结果, 可以直接看mongo aggregate官方文档 的一张图 将整体文档经过多次管道最后生成想要的文档这个原理 官方...
  • import pandas as pd #设置切分区域 listBins = [0, 10, 20, 30, 40, 50, 60, 1000000] #设置切分后对应标签 ...#利用pd.cut进行数据离散化切分 """ pandas.cut(x,bins...
  • oracle分组后取每数据

    千次阅读 2016-04-14 17:37:11
    oracle分组后取每数据   ‘数据格式     分组取第条的效果     sql ? 1 2 3 4 5 6 [sql] SELECT *   ...
  • linq对数据集多个字段进行分组

    千次阅读 2017-02-24 17:02:45
    linq有两种方式对一数据集合进行分组 1.直接传递匿名类型 personList .groupBy(p=>{p.Age,p.Sex}) 2.如果遇到个不支持创建匿名对象来多字段进行分组的,比如System.DataRow ProductAttrsTable ....
  • Python中如何进行数据分组

    千次阅读 2017-07-14 13:57:58
    数据分组 根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究,以揭示其内在联系和规律性。 cut 函数: cut(series,bins,right=True,labels=NULL) ① series 需要分组的数据 ② ...
  • 文章目录数据聚合与分组操作.GroupBy机制1.1遍历各分组1.2选取列或所有列的子集1.3 通过字典或Series进行分组1.4 通过函数进行分组1.5根据索引层级分组二. 数据聚合2.1面向列的多函数应用2.2返回不含行索引的...
  • oracle分组取每数据

    千次阅读 2014-12-26 17:29:07
    oracle分组取每数据
  • 一下是oracle/mysql分组查询查出每组数据的第条数据: 表数据: create table tb_name (  column1 int,  column2 varchar,  column3 int,  column4 date ) 查出时间上最新入库的记录,则: select column1, ...
  • SPSS数据分组

    万次阅读 2018-08-24 14:59:31
    数据分组,根据分析目的将数值型数据进行等距或非等距分组,这个过程也称为数据离散化,一般用于查看分布,入消费分布、收入分布、年龄分布等 在SPSS中主要使用可视分箱来对数据分组操作,首先打开数据,点击转换...
  • 学生的成绩按科类进行分组查询,如分组查询科类中学生的最大成绩。 2、遇到的问题 学生数据中,学生的科类同时存在null和‘’,这样使用group by会出现两条记录,null和''作为单独条记录 3、解决办法 使用...
  • 有两个字段A,B。先A进行分组,在A进行分组的条件下,将B字段都不为空的数据筛选出来。这个的语句怎么写,求大佬指点迷津一下。
  • 初始返回数据: trainDetails=[{ "id": 1, 'active':'羽毛球', "startDate": "2015-05-11" }, { "id": 2, 'active':'篮球', "startDate": "2015-05-10" }, { "id": 3, 'active':'乒乓球', ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 331,051
精华内容 132,420
关键字:

对一组数据进行分组