导读:由于基本类型的数据都实现了一个共同的接口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.Arrays;
  5 import java.util.Date;
  6 import java.util.List;
  7
  8 /**
  9  * 自定义实现数据排序
 10  * 例:新闻数据信息排序
 11  * 1.按照点击率Integer排序
 12  * 2.按照标题信息String排序
 13  * 3.可以将时间数组转String数组同样实现类似2的排序
 14  */
 15 public class CustomizeSort {
 16
 17     public static void main(String[] args) {
 18         SortByclickNum();
 19         SortByTitle();
 20         getDate();
 21     }
 22     //自定义实现根据新闻点击量将新闻标题排序
 23     public static void SortByclickNum() {
 24         //获取数据
 25         List<News> list=setData();
 26         List<Integer> ls=new ArrayList<Integer>();
 27         System.out.println("点击量数据为:");
 28         //将数据放入集合中以便存储
 29         for(int i=0;i<list.size();i++) {
 30             ls.add(list.get(i).clickNum);
 31             System.out.print(ls.get(i)+" "+"\n");
 32         }
 33         Integer[] in=new Integer[ls.size()];
 34         for(int j=0;j<ls.size();j++) {
 35             in[j]=ls.get(j);
 36         }
 37         //冒泡排序
 38         BuboSort(in);
 39         //打印结果
 40         System.out.println("冒泡最终结果:"+Arrays.toString(in));
 41
 42     }
 43
 44     public static void getDate() {
 45         //获取数据
 46         List<News> list=setData();
 47         List<Date> ls=new ArrayList<Date>();
 48         System.out.println("更新日期数据为:");
 49         for(int i=0;i<list.size();i++) {
 50             ls.add(list.get(i).date);
 51             System.out.print(ls.get(i)+" "+"\n");
 52         }
 53     }
 54
 55     //这里实现将新闻的标题获取,并根据标题名进行排序
 56     private static void SortByTitle() {
 57         //获取数据
 58         List<News> list=setData();
 59         List<String> ls=new ArrayList<String>();
 60         System.out.println("标题名称数据为:");
 61         for(int i=0;i<list.size();i++) {
 62             ls.add(list.get(i).title);
 63             System.out.print(ls.get(i)+" "+"\n");
 64         }
 65         String[] str = new String[ls.size()];
 66         for(int j=0;j<ls.size();j++) {
 67             str[j]=ls.get(j);
 68         }
 69         //借助compareTo()方法实现另一种形式的冒泡
 70         for(int m=0;m<str.length;m++) {
 71             for(int n=m;n<str.length;n++) {
 72                 if(str[n].compareTo(str[m])<0) {
 73                     //将较小的值放置于前面
 74                     String temp=null;
 75                     temp=str[m];
 76                     str[m]=str[n];
 77                     str[n]=temp;
 78                 }
 79             }
 80         }
 81         System.out.println("冒泡结果为:"+Arrays.toString(str));
 82     }
 83
 84     //新闻信息初始化数据输入,以集合的形式存放数据
 85     public static List<News> setData() {
 86         List<News> list=new ArrayList<News>();
 87         News N1=new News("新闻A",1000,"2019-04");
 88         News N2=new News("新闻B",1500,"2019-05");
 89         News N3=new News("新闻D",1800,"2019-03");
 90         News N4=new News("新闻F",900,"2019-11");
 91         News N5=new News("新闻C",800,"2019-9");
 92         list.add(N1);
 93         list.add(N2);
 94         list.add(N3);
 95         list.add(N4);
 96         list.add(N5);
 97         return list;
 98
 99     }
100     //冒泡排序方法实现
101     private static void BuboSort(Integer[] arr) {
102         //由第一个元素开始遍历直到数组长度-1,即最后一个元素,表示冒泡排序的趟数为元素个数减一
103         for(int i=0;i<arr.length-1;i++) {
104             //表示冒泡排序的次数
105             for(int j=0;j<arr.length-i-1;j++) {
106                 int temp = 0;
107                 //将更小的值冒泡至前面
108                 if(arr[j]>arr[j+1]) {
109                     temp=arr[j];
110                     arr[j]=arr[j+1];
111                     arr[j+1]=temp;
112                 }
113             }
114         }
115     }
116 }

效果截图:

 

ps:文章未完善,正在努力学习改进排序类方法的实现。

转载于:https://www.cnblogs.com/weekstart/p/10778298.html

java-自定义数据排序相关推荐

  1. Java实现数据排序

    一.冒泡法 1. 本实验使用冒泡法对一维数组进行降序处理 2.冒泡法的简绍:冒泡法排序,可以实现降序和升序两种功能,有躺数(外循环),次数(内循环),次数可以实现将数据放到对应的位置,趟数可以保证数据 ...

  2. java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序

    问题 我希望为我的地址簿应用程序实现一个排序功能. 我想排序anArrayList contactArray.Contact是一个包含四个字段的类:名称,家庭电话号码,手机号码和地址.我想排序name ...

  3. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

  4. Java自定义数据脱敏注解

    应用场景 数据库中密文存储身份证.手机号等敏感信息时,Java需要将密文数据转换为明文并脱敏返回给前端. 脱敏方式枚举类 public enum DesensitizationTypeEnum {/* ...

  5. oracle怎么自定义排序,ORACLE自定义顺序排序

    ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...

  6. 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )

    文章目录 Question Ideas 1.Answer( Java ) - 自定义定制排序 Code 2.Answer( Java ) - 简单模拟 Code Question 953. 验证外星语 ...

  7. Java基础-TreeSet与Java自定义类型的排序

    TreeSet与Java自定义类型的排序 演示TreeSet对String是可排序的 TreeSet无法对自定义类型进行排序 比较规则怎么写 自平衡二叉树结构 实现比较器接口 Collections工 ...

  8. java对列表数据排序_如何在Java中对列表进行排序

    java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...

  9. Python使用matplotlib可视化发散棒棒糖图、发散棒棒糖图可以同时处理负值和正值、并按照大小排序区分数据、为发散棒棒糖图的特定数据点添加标签、自定义背景填充色、自定义数据点颜色

    Python使用matplotlib可视化发散棒棒糖图.发散棒棒糖图可以同时处理负值和正值.并按照大小排序区分数据.为发散棒棒糖图的特定数据点添加标签.自定义背景填充色.自定义数据点颜色(Diverg ...

  10. R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩、自定义调色板、在两端添加点图的线段segments、整体排序从大到小、自定义数据点的大小、添加数值标签)

    R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩.自定义调色板.在两端添加点图的线段segments.整体排序从大到小.自定义数据点的大小.添加数值标签) 目录

最新文章

  1. 机器视觉检测中的图像预处理方法
  2. DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
  3. 链表题目总结(第一篇)
  4. Thinking in React Implemented by Reagent
  5. A-Frame 简介03
  6. 概率论-4.4 特征函数(待补充)
  7. 一些Linux shell
  8. [转载] 启用和禁用 Reporting Services 的客户端打印和导出文件格式
  9. Dubbo——增强SPI的实现
  10. 【渝粤教育】国家开放大学2018年秋季 1317T社会工作行政(本) 参考试题
  11. 数据源改成mysql_flowable流程war修改成数据源为mysql
  12. 20210612:力扣第244周周赛题解(上)
  13. 淘宝Tprofiler工具实现分析
  14. BigData | 一文带你搞清楚“数据倾斜”
  15. hdu 2544(最短路)
  16. 鲁棒控制器设计方法(systune,hinfsyn,musyn...)
  17. PHP - Sessions
  18. pageContext对象的用法详述
  19. html图片做一个转盘,H5+CSS3+JS制作抽奖转盘
  20. 原码、反码、补码转换和取反符号的运算规则

热门文章

  1. 第20条:为私有方法名加前缀
  2. 利用TreeSet给纯数字字符串排序
  3. 通过Windbg查看DataTable的值
  4. 如何在matlab sfunction 函数中调用自己写的函数?
  5. 新加坡计划通过区块链促进东盟金融包容性
  6. Swift: 可变参数
  7. AutoCAD 2011、Map 3D 2011, Civil 3D 2011命令行中不能输入中文的修复补丁
  8. [翻译] NSRegexTester
  9. springmvc学习笔记--Interceptor机制和实践
  10. js向head中添加js代码