App升级案例

编程入门 行业动态 更新时间:2024-10-27 05:25:38

App升级<a href=https://www.elefans.com/category/jswz/34/1770649.html style=案例"/>

App升级案例

数据:
日期,用户名,app名,下载渠道,所在城市,app版本
2017-08-15,ls,陌陌,app store,上海,v2.9
2017-08-15,ls,脉脉,360应用e,上海,v2.3
2017-08-15,wls,陌陌,app store,上海,v2.6
2017-08-15,wls,陌陌,360应用,上海,v2.7
2017-08-15,lp,脉脉,app store,北京,v2.3
2017-08-16,lp,陌陌,app store,东京,v2.8
2017-08-15,ls,脉脉,360应用,上海,v2.4
2017-08-15,wls,陌陌,app store,上海,v2.9

需求:
统计出每天的版本升级情况,例如:
2017-08-14 lp 陌陌 360应用 v1.0 v1.2
2017-08-15 ls 脉脉 360应用 v2.4

分析:

上图红色方框选中的行 放入Bean 中作为TreeMap的key,以便按日期进行排序
列 作为value,因为有多个Bean是一样的,为了value不会被覆盖,使用List存储

Bean:

public class AppBean implements Comparable<AppBean>{//2017-08-15,刘帅老师,陌陌,app store,上海,v2.9private String date;private String name;private String app;private String appStore;

为了实现排序,在Bean中实现Comparable接口,重写CompareTo方法:

注意: 多维度去比较,如果只比较日期,会造成数据损失

public int compareTo(AppBean o) {int res = 0;try {String d1 = this.getDate();String d2 = o.getDate();//正则表达式,解析String日期,转成长整型SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");long t1 = sdf.parse(d1).getTime();long t2 = sdf.parse(d2).getTime();res = t1>t2?1:t1==t2?0:-1;//如果日期相同比较名字if(res == 0) {res = this.getName().compareTo(o.getName());}} catch (ParseException e) {e.printStackTrace();}return res;}

main方法

        //使用TreeMap,key->AppBean,实现comparable接口,按时间升序Map<AppBean, List<String>> map = new TreeMap<>();BufferedReader br = new BufferedReader(new FileReader("d:/data/app.txt"));String line;while((line = br.readLine())!=null) {//2017-08-15,刘帅老师,陌陌,app store,上海,v2.9String[] split = line.split(",");String date=split[0];String name=split[1];String app=split[2];String appStore=split[3];String version=split[5];AppBean bean = new AppBean(date, name, app, appStore);//map中如果有bean,则返回value,否则返回创建的listList<String> list = map.getOrDefault(bean, new ArrayList<>());list.add(version);//添加到map中,完成第一步,按key的日期排序map.put(bean, list);}

map中value排序,打印

        //对map排序,先转成setSet<Entry<AppBean, List<String>>> set = map.entrySet();for (Entry<AppBean, List<String>> entry : set) {List<String> list = entry.getValue();//对list进行升序,使用字符串的compareto方法,按词典顺序升序Collections.sort(list, (o1,o2)->o1.compareToIgnoreCase(o2));System.out.println(entry.getKey()+"->"+list);//[date=2016-08-14, name=刘帅老师, app=美拍, appStore=app store]->[v1.2, v1.2, v1.8]}

更多推荐

App升级案例

本文发布于:2023-07-28 21:05:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1318595.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:案例   App

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!