【157天】尚学堂高琪Java300集视频精华笔记(126)

决断。。。

第126集:引用类型_自定义数据排序

使用Comparable

  1. 实体类中实现了ComparaTo方法

package test126;import java.text.SimpleDateFormat;
import java.util.Date;public class NewsItem1 implements Comparable<NewsItem1> {private String title;private int hits;private Date pubTime;public void setTitle(String title){this.title = title;}public String getTitle(){return title;}public void setHits(int hits){this.hits = hits;}public int getHits(){return hits;}public void setPubtime(Date pubTime){this.pubTime = pubTime;}public Date getPubtime(){return pubTime;}public NewsItem1(){}public NewsItem1(String title,int hits,Date pubTime){this.title = title;this.hits = hits;this.pubTime = pubTime;}public int compareTo(NewsItem1 o){//点击量升序,时间降序int result;result = this.hits - o.hits; //先比较点击量if(result==0){result = this.pubTime.compareTo(pubTime);//再比较时间if(result==0){result = this.title.compareTo(title);//最后再比较标题字符串}}return -result;// Collection.sort按从小到大排序,而我想要从小到大排序的结果,所以加负号}public String toString(){StringBuilder sb = new StringBuilder();sb.append("标题:").append(this.title);sb.append(",时间:").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.pubTime));sb.append(",点击量").append(this.hits).append("\n");return sb.toString();}}
  1. Collection.sort是升序

package test126;import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;public class MySort1 {public static void main(String[] args){List<NewsItem1> news = new ArrayList<NewsItem1>();news.add(new NewsItem1("哈哈哈哈",50,new Date()));news.add(new NewsItem1("呵呵呵呵",100,new Date(System.currentTimeMillis()-1000*60*60)));news.add(new NewsItem1("妹妹诶诶",0,new Date(System.currentTimeMillis()+1000*60*60)));System.out.println("排序前"+news);Collections.sort(news);System.out.println("排序后"+news);}
}

使用Comparator

  1. 实体类很干净~功能很单一

package test126;import java.text.SimpleDateFormat;
import java.util.Date;public class NewsItem2 {private String title;private int hits;private Date pubTime;public void setTitle(String title){this.title = title;}public String getTitle(){return title;}public void setHits(int hits){this.hits = hits;}public int getHits(){return hits;}public void setPubTime(Date pubTime){this.pubTime = pubTime;}public Date getPubTime(){return pubTime;}public NewsItem2(){}public NewsItem2(String title,int hits,Date pubTime){this.title = title;this.hits = hits;this.pubTime = pubTime;}public String toString(){StringBuilder sb = new StringBuilder();sb.append("标题:").append(this.title);sb.append(",时间:").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.pubTime));sb.append(",点击量").append(this.hits).append("\n");return sb.toString();}}
package test126;import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;public class MySort2 {public static void main(String[] args){List<NewsItem2> news = new ArrayList<NewsItem2>();news.add(new NewsItem2("哈哈哈哈哈",50,new Date()));news.add(new NewsItem2("呵呵呵呵",100,new Date(System.currentTimeMillis()-1000*60*60)));news.add(new NewsItem2("妹妹诶",0,new Date(System.currentTimeMillis()+1000*60*60)));System.out.println("排序前"+news);Collections.sort(news,new B());System.out.println("排序后"+news);}
}
  1. 采用A方案排序

package test126;import java.util.Comparator;public class A implements Comparator<NewsItem2> {public int compare(NewsItem2 o1,NewsItem2 o2){//点击量升序,时间降序int result;result = o1.getHits() - o2.getHits(); //先比较点击量if(result==0){result = o1.getPubTime().compareTo(o2.getPubTime());//再比较时间if(result==0){result = o1.getTitle().compareTo(o2.getTitle());//最后再比较标题字符串}}return -result;// Collection.sort按从小到大排序,而我想要从小到大排序的结果,所以加负号}
}
  1. 采用B方案排序

package test126;import java.util.Comparator;public class B implements Comparator<NewsItem2> {public int compare(NewsItem2 o1,NewsItem2 o2){//字符串长度int result = o1.getTitle().length()-o2.getTitle().length();//再比较时间return -result;}
}

【157天】尚学堂高琪Java300集视频精华笔记(126)相关推荐

  1. 【160天】尚学堂高琪Java300集视频精华笔记(129)

    明天开始,专栏增加一个黑马程序员的课程更新. 其它容器收尾讲解 队列Queue与Deque(单向队列与双向队列) Enumeration(较老的接口,JDK1.5前使用频繁,维护旧系统会用到) Has ...

  2. 【133天】尚学堂高淇Java300集视频精华笔记(71-72)

    第71集:常用类/file类/打印目录树状结构/递归算法 课堂代码 package com.test071;import java.io.File;public class Test071 {publ ...

  3. 【138天】尚学堂高淇Java300集视频精华笔记(84)

    第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...

  4. 【135天】尚学堂高淇Java300集视频精华笔记(74-76)

    第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...

  5. 【131天】尚学堂高淇Java300集视频精华笔记(65-66)

    第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...

  6. 【147天】尚学堂高淇Java300集视频精华笔记(108-109)

    第108集:容器equals和hashcodeJDK源代码分析 本集知识点 Java中规定,若两个对象equals比较后内容相等(为true),则hashCode必须相等,反之不然.[原因见内存分析图 ...

  7. 【153天】尚学堂高淇Java300集视频精华笔记(122-123)

    叨叨两句(2017.7.8) 我现在发现我太适合当程序员了,稍微懂点知识后想法就一堆一堆的,哈哈. 今天敲下面这个冒泡排序时感觉太特么好了.原来学编程最快乐的事情就是懂了一些知识后,把它变成可以在电脑 ...

  8. 尚学堂 高琪JAVA300集第十一章作业 编程题答案

    本人 JAVA初学者 在寻找这一方面的答案时没有看见 ,本着分享的精神 自己做了出来 也就传上来了 水平有限 存在有错的地方或者改进的方法 ,望大佬们可以提出 万分感谢. 1.1. 设计一个多线程的程 ...

  9. JAVA语言发展介绍【尚学堂java300集视频学习笔记】

    Java发展简史 1991年,James Gosling在SUN公司的工程师小组想要设计这样一种小型计算机语言.该语言主要用于像电视盒这样的消费类电子产品.另外,由于不同的厂商选择不同的CPU和操作系 ...

  10. DAY12:尚学堂高琪JAVA(119~123)Hashmap 与冒泡排序

    Hashmap 与冒泡排序 map,set,list的区别 添加链接描述 添加链接描述 添加链接描述 MyArrayList.java package fanxing; import java.uti ...

最新文章

  1. 区块链共识机制及其迭代
  2. git: No refs in common and none specified; doing no
  3. 文化创意企业纷纷跨界融合,软件资产管理奠定安全基础
  4. VR应用开发遍地走的日子还有多远
  5. wordpress搭建个人博客
  6. 标准模板库(STL)之配接器(Adapter)
  7. Docker Yearning + Inception SQL审核平台搭建
  8. linux pagecache与内存占用
  9. JDK8下载安装教程
  10. 17、【易混淆概念集】第十一章1 项目风险 风险临界值 VS 风险承受力 风险管理流程 风险管理及变更流程 规划风险管理 识别风险
  11. 盘点2017年最热门的10个增长黑客策略
  12. ssl证书 嵌入式设备_ngx_http_ssl_module
  13. python实现情人节的爱意表达
  14. 模块已加载,但是无法找到regsvrerver入口点
  15. Drupal踩坑记录之新建content无法访问
  16. 苹果电脑数据恢复推荐易我数据恢复:
  17. #python字典(dic缩写Dictionary)基础语法及代码实战
  18. usleep的--系统调用流程--及不准确的问题 - Android4 0 1
  19. ORACLE的TX锁和TM锁及解锁
  20. PHP5 mysqli 绑定参数

热门文章

  1. CSUOJ 1256 天朝的单行道(最短路)
  2. 0基础自学鸿蒙-Day_002 HelloWorld
  3. Android版的股票行情K线图开发
  4. 事业单位考试题库计算机网络,计算机考试题库:计算机网络模拟练习题(2)...
  5. 2018 蓝桥杯省赛 A 组模拟赛(一) 青出于蓝胜于蓝
  6. 解决SQLServer2000安装被挂起的方法
  7. dbcp 出现的connection is closed的问题
  8. 十七、DS1302的基本应用
  9. c语言编写单片机密码锁程序,51单片机密码锁制作的程序和流程图(很详细)
  10. Squid缓存代理服务器