脚本宝典收集整理的这篇文章主要介绍了【157天】尚学堂高琪Java300集视频精华笔记(126),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
【157天】尚学堂高琪Java300集视频精华笔记(126)
决断。。。
第126集:引用类型_自定义数据排序
使用Comparable
实体类中实现了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(); } }
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
实体类很干净~功能很单一
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); } }
采用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按从小到大排序,而我想要从小到大排序的结果,所以加负号 } }
采用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)全部内容,希望文章能够帮你解决【157天】尚学堂高琪Java300集视频精华笔记(126)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。