java-自定义数据排序
导读:由于基本类型的数据都实现了一个共同的接口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-自定义数据排序相关推荐
- Java实现数据排序
一.冒泡法 1. 本实验使用冒泡法对一维数组进行降序处理 2.冒泡法的简绍:冒泡法排序,可以实现降序和升序两种功能,有躺数(外循环),次数(内循环),次数可以实现将数据放到对应的位置,趟数可以保证数据 ...
- java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序
问题 我希望为我的地址簿应用程序实现一个排序功能. 我想排序anArrayList contactArray.Contact是一个包含四个字段的类:名称,家庭电话号码,手机号码和地址.我想排序name ...
- java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现
简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...
- Java自定义数据脱敏注解
应用场景 数据库中密文存储身份证.手机号等敏感信息时,Java需要将密文数据转换为明文并脱敏返回给前端. 脱敏方式枚举类 public enum DesensitizationTypeEnum {/* ...
- oracle怎么自定义排序,ORACLE自定义顺序排序
ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...
- 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )
文章目录 Question Ideas 1.Answer( Java ) - 自定义定制排序 Code 2.Answer( Java ) - 简单模拟 Code Question 953. 验证外星语 ...
- Java基础-TreeSet与Java自定义类型的排序
TreeSet与Java自定义类型的排序 演示TreeSet对String是可排序的 TreeSet无法对自定义类型进行排序 比较规则怎么写 自平衡二叉树结构 实现比较器接口 Collections工 ...
- java对列表数据排序_如何在Java中对列表进行排序
java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...
- Python使用matplotlib可视化发散棒棒糖图、发散棒棒糖图可以同时处理负值和正值、并按照大小排序区分数据、为发散棒棒糖图的特定数据点添加标签、自定义背景填充色、自定义数据点颜色
Python使用matplotlib可视化发散棒棒糖图.发散棒棒糖图可以同时处理负值和正值.并按照大小排序区分数据.为发散棒棒糖图的特定数据点添加标签.自定义背景填充色.自定义数据点颜色(Diverg ...
- R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩、自定义调色板、在两端添加点图的线段segments、整体排序从大到小、自定义数据点的大小、添加数值标签)
R语言使用ggpubr包的ggdotplot函数可视化水平棒棒糖图(自定义分组数据点色彩.自定义调色板.在两端添加点图的线段segments.整体排序从大到小.自定义数据点的大小.添加数值标签) 目录
最新文章
- 机器视觉检测中的图像预处理方法
- DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
- 链表题目总结(第一篇)
- Thinking in React Implemented by Reagent
- A-Frame 简介03
- 概率论-4.4 特征函数(待补充)
- 一些Linux shell
- [转载] 启用和禁用 Reporting Services 的客户端打印和导出文件格式
- Dubbo——增强SPI的实现
- 【渝粤教育】国家开放大学2018年秋季 1317T社会工作行政(本) 参考试题
- 数据源改成mysql_flowable流程war修改成数据源为mysql
- 20210612:力扣第244周周赛题解(上)
- 淘宝Tprofiler工具实现分析
- BigData | 一文带你搞清楚“数据倾斜”
- hdu 2544(最短路)
- 鲁棒控制器设计方法(systune,hinfsyn,musyn...)
- PHP - Sessions
- pageContext对象的用法详述
- html图片做一个转盘,H5+CSS3+JS制作抽奖转盘
- 原码、反码、补码转换和取反符号的运算规则