导读:由于基本类型的数据都实现了一个共同的接口java.lang.Comparable接口,都实现了该接口下面的compareTo()方法,因此想要利用面向对象实现现实生活中的一些情景再现,比如新闻根据标题内容,点击量,更新日期等等进行排名。
1.首先新建一个实体类,用于存放数据
1 package com.etc; 2 import java.text.DateFormat; 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 //新闻实体类,里面包含新闻标题,新闻的点击率,以及更新时间 6 import java.util.Date; 7 8 public class News { 9 public String title; 10 public int clickNum; 11 public Date date; 12 public News(String title, int clickNum, String date) { 13 super(); 14 this.title = title; 15 this.clickNum = clickNum; 16 //将传入的String类型的日期进行转换 17 DateFormat format=new SimpleDateFormat("yyyy-MM"); 18 try { 19 this.date = format.parse(date); 20 } catch (ParseException e) { 21 e.printStackTrace(); 22 } 23 } 24 25 public News(String title) { 26 this.title=title; 27 } 28 29 public String getTitle() { 30 return title; 31 } 32 public void setTitle(String title) { 33 this.title = title; 34 } 35 public int getClickNum() { 36 return clickNum; 37 } 38 public void setClickNum(int clickNum) { 39 this.clickNum = clickNum; 40 } 41 public Date getDate() { 42 return date; 43 } 44 public void setDate(Date date) { 45 this.date = date; 46 } 47 48 }
2.具体排序类方法实现
1 package com.etc; 2 3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.List; 6 7 /** 8 * 自定义实现数据排序 9 * 例:新闻数据信息排序 10 * 1.按照时间信息Date排序 11 * 2.按照点击率Integer排序 12 * 3.按照标题信息String排序 13 */ 14 public class CustomizeSort { 15 16 public static void main(String[] args) { 17 SortByclickNum(); 18 SortByDate(); 19 SortByTitle(); 20 } 21 //自定义实现根据新闻点击量将新闻标题排序 22 public static void SortByclickNum() { 23 //获取数据 24 List<News> list=setData(); 25 List<Integer> ls=new ArrayList<Integer>(); 26 System.out.println("点击量数据为:"); 27 //将数据放入集合中以便存储 28 for(int i=0;i<list.size();i++) { 29 ls.add(list.get(i).clickNum); 30 System.out.println(ls.get(i)+" "); 31 } 32 33 } 34 35 public static void SortByDate() { 36 //获取数据 37 List<News> list=setData(); 38 List<Date> ls=new ArrayList<Date>(); 39 System.out.println("更新日期数据为:"); 40 for(int i=0;i<list.size();i++) { 41 ls.add(list.get(i).date); 42 System.out.println(ls.get(i)+" "); 43 } 44 } 45 46 //这里实现将新闻的标题获取,并根据标题名进行排序 47 private static void SortByTitle() { 48 //获取数据 49 List<News> list=setData(); 50 List<String> ls=new ArrayList<String>(); 51 System.out.println("标题名称数据为:"); 52 for(int i=0;i<list.size();i++) { 53 ls.add(list.get(i).title); 54 System.out.println(ls.get(i)+" "); 55 } 56 } 57 58 //新闻信息初始化数据输入,以集合的形式存放数据 59 public static List<News> setData() { 60 List<News> list=new ArrayList<News>(); 61 News N1=new News("新闻A",1000,"2019-04"); 62 News N2=new News("新闻B",1500,"2019-05"); 63 News N3=new News("新闻C",1800,"2019-03"); 64 News N4=new News("新闻D",900,"2019-11"); 65 News N5=new News("新闻E",800,"2019-9"); 66 list.add(N1); 67 list.add(N2); 68 list.add(N3); 69 list.add(N4); 70 list.add(N5); 71 return list; 72 73 } 74 75 //实现打印功能 76 private static void PrintfOrder(int[] a) { 77 for(int i=0;i<a.length;i++) { 78 System.out.print(a[i]+" "); 79 } 80 System.out.print("\n"); 81 } 82 }
效果截图:
ps:文章未完善,正在努力学习改进排序类方法的实现。
原文:https://www.cnblogs.com/weekstart/p/10778298.html