博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【开发者笔记】按List中存放对象的某一字段计数的问题
阅读量:7132 次
发布时间:2019-06-28

本文共 1970 字,大约阅读时间需要 6 分钟。

  如题,假设有如下表t_info:

name  date info
a 20127-12-20 xxxx描述
b 20127-12-20 yyyyy描述
c 20127-12-21 zzz描述
d 20127-12-22 mmmm描述

 

  如果我们要计算上表中每一天的info个数,name在数据库中我们可以简单解决:

select date --日期,count(*) as num --数量from t_infogroup by date

  

  但是如果我们将上述数据转成了Info对象,那么在程序中应该怎么计算呢?于是就来记录一下~

  实现思路:

    1、新建一个Map<String,Integer>对象用来存放计算结果,键表示日期,值表示该日期下的对象个数。

    2、遍历List中的Info对象,提取对象中的Date字段,判断Map是否存在key为该Date的对象,若不存在,则添加键值对(Date,0),对Map中key为Date的值加1。

    3、计算结束,遍历Map打印结果。

  下面是代码:

package com.dyi.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class SortTest {	public static void main(String[] args) {				//构造List		List
list = new ArrayList
(); initList(list); //构造结果Map,并遍历List得出结果 Map
groupList = new HashMap
(); for(Info info:list){ String key = info.date; if(!groupList.containsKey(key)){ groupList.put(key, 0); } groupList.put(key, groupList.get(key)+1); } //打印结果 for(String key:groupList.keySet()){ System.out.println("key:"+key+",value:"+groupList.get(key)); } } public static void initList(List
list){ list.add(new Info("2017-12-20")); list.add(new Info("2017-12-20")); list.add(new Info("2017-12-21")); list.add(new Info("2017-12-21")); list.add(new Info("2017-12-21")); list.add(new Info("2017-12-22")); list.add(new Info("2017-12-22")); list.add(new Info("2017-12-22")); list.add(new Info("2017-12-22")); list.add(new Info("2017-12-22")); list.add(new Info("2017-12-23")); list.add(new Info("2017-12-23")); list.add(new Info("2017-12-23")); list.add(new Info("2017-12-24")); list.add(new Info("2017-12-25")); }}class Info{ public String date; public String name; public String info; public Info(String date){ this.date = date; }}

  下面是打印结果,结果吻合……

  

  这些或简单或复杂的小功能,都可以通过基本类库来完成的,毕竟java的工具类那么多。只是完成时间和性能的差别而已,没看过大牛的写法,自己记录一下吧。

 

黑夜给了我黑色的眼睛,我却用它寻找光明

转载地址:http://nxurl.baihongyu.com/

你可能感兴趣的文章
CentOS 6.5 下安装 Redis 2.8.7
查看>>
Eclipse *的安装(图文详解)
查看>>
高性能图文混排框架,构架顺滑的iOS应用-b
查看>>
windows 下安装使用ipython
查看>>
苹果电脑macbook怎样强制关闭软件
查看>>
Linux下编译LibCURL
查看>>
错误提示:通过 Web 服务器的身份验证的用户无权打开文件系统上的文件
查看>>
python 取两数的百分比
查看>>
1-MSP430点亮一个灯
查看>>
Local System、Local Service與Network Service
查看>>
利用SQL语句查询数据库中所有表
查看>>
虚拟机中的锁优化简介(适应性自旋/锁粗化/锁削除/轻量级锁/偏向锁)
查看>>
Golang的交互模式进阶-读取用户的输入
查看>>
mycat中间件--linux安装mycat1.6版本
查看>>
MySQL的用户管理
查看>>
linux配置java环境变量(详细)
查看>>
HTML CSS + DIV实现整体布局
查看>>
【开源项目】电视盒子好用又强大的APP: TVRemoteIME
查看>>
Java开发报表——Grid++Report 报表设计器
查看>>
三、加载公共语言运行时
查看>>