java 结构体排序 两个优先级排序

工作快两年了,慢慢觉得算法是真重要,不是为了面试刷算法重要,而是在刷题的过程中慢慢形成的这种思维,遇到问题首先思考有几种解决方案,这些解决方案分别都有什么优缺点,算法代价是多少,时间代价和空间代价是否都能接受,我不是计算机科班出身,所以一开始没有接受到正确的教育,没有形成编程思维三观,以前是觉得能解决问题就ok了,但是这样其实是不对的。

                                                                                                            ——碎碎念


背景:

需要显示手机里的应用、当前占用的内存和最近一次使用的时间这样的三个信息到界面上,要按照占用的内存从大到小排序,如果占用的内存一样,就按照内存的大小排;或者按照最近一次使用的时间排序,如果最近使用的时间一样,就按照内存的大小排。

由于应用的包名和对应的其他信息不是一一映射关系,所以不能用普通的key value型数据结构保存和排序。考虑到数据的可扩展性和存储显示,使用结构体实现。

java的代码实现如下。


package sort;

import java.util.Arrays;

import java.util.Comparator;

import java.util.Scanner;

public class SortByTimeOrSize {

//结构体的定义

public static class stu implements Comparable{

        long lastUsedTime;//与现在的时间差,时间差越大,代表很久没有用,往前排

        long appTotalSize;

        String packageName;

        stu(){}//无参构造

        stu(long time,long size,String name){

            this.lastUsedTime = time;

            this.appTotalSize = size;

            this.packageName = name;

        }

@Override

public int compareTo(Object o) {

// TODO Auto-generated method stub

return 0;

}

    }

    public static void main(String[] args) {

        // TODO Auto-generated method stu


//结构体排序 按照最近使用的时间排序(这里的时间代表当前时间-上次使用的时间,是时间差,所以值越大,表示上次使用的时间越早)

Comparator<stu> cmpByTime =new Comparator<stu>(){

    public int compare(stu a,stu b) {

    if(a.lastUsedTime != b.lastUsedTime)

    return (int) (b.lastUsedTime-a.lastUsedTime);//按时间降序

    else return (int) (b.appTotalSize-a.appTotalSize);//如果时间相等,按空间大小升序

    }

    };

//结构体排序 按照空间占用内存大小排序

Comparator<stu> cmpBySize =new Comparator<stu>(){

    public int compare(stu a,stu b) {

    if(a.appTotalSize != b.appTotalSize)

    return (int) (b.appTotalSize-a.appTotalSize);//按占用空间大小降序

    else return (int) (b.lastUsedTime-a.lastUsedTime);//如果空间相等,按时间升序

    }

    };

        stu[] no = new stu[10];

        no[0] = new stu(9996,8505,"com.wenshy.zero");

        no[1] = new stu(9996,3264,"com.wenshy.one");

        no[2] = new stu(9996,8506,"com.wenshy.two");

        no[3] = new stu(9996,4565,"com.wenshy.three");

        no[4] = new stu(9996,8777,"com.wenshy.four");

        no[5] = new stu(1584,9694,"com.wenshy.five");

        no[6] = new stu(9997,9696,"com.wenshy.six");

        no[7] = new stu(1584,9697,"com.wenshy.seven");

        no[8] = new stu(9998,9699,"com.wenshy.eight");

        no[9] = new stu(1584,9699,"com.wenshy.nine");

        //按空间排:8 9 7 6 5 4 2 0 3 1

        //按时间排:8 6 4 2 0 3 1 9 7 5

        Arrays.sort(no,cmpBySize);//调用对应方法 进行排序

        for(int i = 0;i < no.length;i++){

            System.out.println(" time:"+no[i].lastUsedTime+" size:"+no[i].appTotalSize+" name:"+no[i].packageName);

        }

        return;

    }

}

目前的实现方案就是这样,有没有更好的还在思考。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,788评论 0 11
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,573评论 1 114
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,689评论 0 3
  • 一、年目标 指导方向: 财富是我的员工,不断让它出去打工赚好钱。 近期具体目标: 逐步累积,年存款翻倍。 二、每日...
    Gloriawx阅读 81评论 0 1
  • 昨天中午学校老师给我电话,说女儿早上没交电话,我知道女儿心里还在纠结,不想交手机,昨晚她去同学家住,我想着也是想回...
    绿袖子_e409阅读 229评论 3 3