利用java几个简单的工具来统计每天用户升级手机App信息, 先看数据和需求:

日期,用户名,app名,下载渠道,所在城市,app版本
2017-08-15,金刚葫芦娃,美团外卖,app store,上海,v2.9
2017-08-15,金刚葫芦娃,脉脉,app store,上海,v2.3
2017-08-15,金刚葫芦娃,美团外卖,app store,上海,v2.6
2017-08-15,金刚葫芦娃,美团外卖,app store,上海,v2.7
2017-08-15,金刚葫芦娃,脉脉,app store,北京,v2.3
2017-08-16,金刚葫芦娃,美团外卖,app store,北京,v2.8
2017-08-14,三毛,子弹短息,360应用,北京,v2.0
2017-08-15,哪吒,子弹短息,安智市场,北京,v1.2
2017-08-15,哪吒,子弹短息,安智市场,北京,v1.5
2017-08-15,三毛,子弹短息,360应用,北京,v1.0
2017-08-15,三毛,子弹短息,360应用,北京,v2.1
2017-08-14,三毛,子弹短息,360应用,北京,v1.0
2017-08-14,哪吒,子弹短息,安智市场,北京,v1.2
2017-08-14,三毛,子弹短息,360应用,天津,v1.2
2017-08-14,三毛,子弹短息,小米应用,天津,v2.0
2016-08-14,金刚葫芦娃,美拍,app store,上海,v1.8
2016-08-14,金刚葫芦娃,美拍,app store,上海,v1.2
2016-08-14,金刚葫芦娃,美拍,安智市场,上海,v1.2

需求 统计出每天的app版本升级情况

按照 日期 用户名 app名 新版本下载渠道 升级前版本 升级后版本 进行排列
呈现效果如下:

2016-8-14 金刚葫芦娃 美拍 app store v1.2 v1.8
2016-8-14 金刚葫芦娃 美拍 安智市场 v1.2
2017-8-14 三毛 子弹短息 360应用 v1.0 v1.2 v2.0
2017-8-14 三毛 子弹短息 小米应用 v2.0

分析步骤

  1. 利用Map< String, List< String > > 储存
    * k值 : 日期,用户名,app名,新版本下载渠道.toString
    * value值: app版本
  2. 对Map中的value进行排序(List.sort(new Comparator< String > (){ })
  3. 以TreeMap进行存储, 可实现对k进行自动排序
创建一个AppBean 类
public class AppBean {private String date;private String userName;private String appName;private String downLoadChannel;private String city;private String appRelease;public AppBean(String date, String userName, String appName, String downLoadChannel) {super();this.date = date;this.userName = userName;this.appName = appName;this.downLoadChannel = downLoadChannel;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public String getDownLoadChannel() {return downLoadChannel;}public void setDownLoadChannel(String downLoadChannel) {this.downLoadChannel = downLoadChannel;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getAppRelease() {return appRelease;}public void setAppRelease(String appRelease) {this.appRelease = appRelease;}public String getData() {return date + "," + userName + "," + appName + ","+ downLoadChannel ;}@Overridepublic String toString() {return "AppBean [date=" + date + ", userName=" + userName + ", appName=" + appName + ", downLoadChannel="+ downLoadChannel + ", city=" + city + ", appRelease=" + appRelease + "]";}
}
读取数据信息, 并储存到TreeMap中
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class ReadFile {public static Map<String, List<String>> getInfoMap(String path) throws Exception {Map<String, List<String>> map = new TreeMap<>();BufferedReader br = new BufferedReader(new FileReader(path));String line = null;while ((line = br.readLine()) != null) {String[] split = line.split(",");String date = split[0];String userName = split[1];String appName = split[2];String downLoadChannel = split[3];String city = split[4];String appRelease = split[5];AppBean appBean = new AppBean(date, userName, appName, downLoadChannel);/**获得key 和 版本  value */List appv = map.getOrDefault(appBean.toString(), new ArrayList());appv.add(appRelease);map.put(appBean.toString(), appv);}return map;}}

对TreeMap 中 List排序 , 产生 版本号升序效果

mport java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;public class CompareInfo {public static void main(String[] args) throws Exception {/**依据 版本的List长度筛选发生改变的 信息*/Map<String,List<String>> newMap = new TreeMap<>();Map<String, List<String>> infoMap = ReadFile.getInfoMap("文件所在目录");Set<Entry<String, List<String>>> entrySet3 = infoMap.entrySet();for (Entry<String, List<String>> entry : entrySet3) {List<String> value = entry.getValue();value.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// TODO Auto-generated method stubreturn o1.compareTo(o2);}});}Set<Entry<String, List<String>>> entrySet2 = infoMap.entrySet();for (Entry<String, List<String>> entry : entrySet2) {System.out.println(entry);}}
}

大家可以考虑如何充分利用appBean , 能够实现依据用户名, 地点, 或者应用市场进行筛选选, 而不是采用上述单一的步骤. 实现思想和上述略有不同.

利用java统计每天用户升级手机App信息相关推荐

  1. 最新版勤哲Excel服务器V2017.13.0.1无限用户支持手机APP,微信,任意安装,支持后续升级

    nullem;text-align:left">最新版勤哲Excel服务器V2017.13.0.1无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级. 简介 E ...

  2. Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等

    Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...

  3. 利用java编写网络聊天程序并加密信息

    利用java编写网络聊天程序并加密信息 优化了代码后的地址:https://blog.csdn.net/qq_43483251/article/details/125470514?spm=1001.2 ...

  4. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  5. java 发送短信例子_利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  6. Fiddler利用Xposed框架+JustTrustMe抓取手机APP数据

    文章目录 1. Xposed安装 2. JustTrustMe安装 3. 确保Fiddler在模拟器里配置 此文只是针对Fiddler抓取APP数据失败情况下的方案,主要想解决的是安卓手机APP抓包H ...

  7. 用Java(APICloud)开发手机APP

    近几年手机开发非常流行,可是ios有自己的一套语言,Android虽然可以用Java开发但是也是要需要从google下载插件,总感觉不那么方便,作为Java开发者,有没有一种使用Java语言能够快速开 ...

  8. 利用Android adb命令来测试手机App的耗电量

    使用Android adb命令实现wifi方式连接手机 因为要通过adb命令来监控手机的耗电量,所以建议通过wifi的方式来连接手机,而不是用usb线来连接手机设备.usb方式连接手机会自动给手机充电 ...

  9. back在java里面是什么意思,手机APP中使用history.back()的问题

    样式是一个超链接A标签,通过点击事件来达到返回上一页的效果. 所以通常做饭是把A标签的href写成#,然后onClick事件,刚开始我只是当成一个普通点击事件,然后使用JS进行返回. 写法如下: 返回 ...

最新文章

  1. MSSQL2000 数据库文件迁移到 MSSQL2005 可能要用的一些命令
  2. oracle能否生成mdb,oracle怎么导入.mdb文件
  3. C#重写Equals方法步骤
  4. PHP,如何防止同一用户同一时间多次登录
  5. CA周记 - 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发
  6. php中reset函数,PHP reset()函数
  7. java已知 求p_Java 0520 第五次课作业
  8. Hyper-V 3.0网络虚拟化PART 3:内部交换机
  9. SQL-Server 语句存档整理
  10. mysql 中间表的好处_MySql 使用中间表来提高统计查询速度
  11. 极客大学架构师训练营 微服务架构 领域驱动设计DDD 中台架构、组件设计原则 第十次作业
  12. 电阻器颜色代码在线计算机,色环电阻计算器
  13. vue3 通过naive-ui 使用xicons
  14. python实现对文件夹的图片分类存放(自动新建文件夹存放图片)
  15. 博士申请 | 香港科技大学(广州)王林助理教授招收计算机视觉博士生
  16. 如何用圆弧插补法画一个圆
  17. mac软件拖到dock,重启后显示问号?,的解决方法
  18. CodeWars刷题练习
  19. 1003: 两个整数的四则运算 Python
  20. SAP标准价及实际价查看

热门文章

  1. PS纳米纤维膜 聚苯乙烯 纤维直径500-2000nm
  2. 51nod 1629 B君的圆锥
  3. React SSR 服务器端渲染
  4. 消防工程师 8.4 防排烟系统-联动控制 9. 应急照明和疏散指示系统
  5. ios 中字符串怎么换行
  6. jQuery开发经验实例笔记
  7. 杀不死的人狼——我读《人月神话》(三)
  8. caffe源码分析--SyncedMemory 内存管理机制
  9. 面包屑效果(element + vue)
  10. 这次我真心想告诉你:分手吧!