java-自定义数据排序
导读:由于基本类型的数据都实现了一个共同的接口java.lang.Comparable接口,都实现了该接口下面的compareTo()方法,因此想要利用面向对象实现现实生活中的一些情景再现,比如新闻根据标题内容,点击量,更新日期等等进行排名。
1.首先新建一个实体类,用于存放数据
package com.etc;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
//新闻实体类,里面包含新闻标题,新闻的点击率,以及更新时间
import java.util.Date; public class News {
public String title;
public int clickNum;
public Date date;
public News(String title, int clickNum, String date) {
super();
this.title = title;
this.clickNum = clickNum;
//将传入的String类型的日期进行转换
DateFormat format=new SimpleDateFormat("yyyy-MM");
try {
this.date = format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
} public News(String title) {
this.title=title;
} public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getClickNum() {
return clickNum;
}
public void setClickNum(int clickNum) {
this.clickNum = clickNum;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
} }
2.具体排序类方法实现
package com.etc; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List; /**
* 自定义实现数据排序
* 例:新闻数据信息排序
* 1.按照点击率Integer排序
* 2.按照标题信息String排序
* 3.可以将时间数组转String数组同样实现类似2的排序
*/
public class CustomizeSort { public static void main(String[] args) {
SortByclickNum();
SortByTitle();
getDate();
}
//自定义实现根据新闻点击量将新闻标题排序
public static void SortByclickNum() {
//获取数据
List<News> list=setData();
List<Integer> ls=new ArrayList<Integer>();
System.out.println("点击量数据为:");
//将数据放入集合中以便存储
for(int i=0;i<list.size();i++) {
ls.add(list.get(i).clickNum);
System.out.print(ls.get(i)+" "+"\n");
}
Integer[] in=new Integer[ls.size()];
for(int j=0;j<ls.size();j++) {
in[j]=ls.get(j);
}
//冒泡排序
BuboSort(in);
//打印结果
System.out.println("冒泡最终结果:"+Arrays.toString(in)); } public static void getDate() {
//获取数据
List<News> list=setData();
List<Date> ls=new ArrayList<Date>();
System.out.println("更新日期数据为:");
for(int i=0;i<list.size();i++) {
ls.add(list.get(i).date);
System.out.print(ls.get(i)+" "+"\n");
}
} //这里实现将新闻的标题获取,并根据标题名进行排序
private static void SortByTitle() {
//获取数据
List<News> list=setData();
List<String> ls=new ArrayList<String>();
System.out.println("标题名称数据为:");
for(int i=0;i<list.size();i++) {
ls.add(list.get(i).title);
System.out.print(ls.get(i)+" "+"\n");
}
String[] str = new String[ls.size()];
for(int j=0;j<ls.size();j++) {
str[j]=ls.get(j);
}
//借助compareTo()方法实现另一种形式的冒泡
for(int m=0;m<str.length;m++) {
for(int n=m;n<str.length;n++) {
if(str[n].compareTo(str[m])<0) {
//将较小的值放置于前面
String temp=null;
temp=str[m];
str[m]=str[n];
str[n]=temp;
}
}
}
System.out.println("冒泡结果为:"+Arrays.toString(str));
} //新闻信息初始化数据输入,以集合的形式存放数据
public static List<News> setData() {
List<News> list=new ArrayList<News>();
News N1=new News("新闻A",1000,"2019-04");
News N2=new News("新闻B",1500,"2019-05");
News N3=new News("新闻D",1800,"2019-03");
News N4=new News("新闻F",900,"2019-11");
News N5=new News("新闻C",800,"2019-9");
list.add(N1);
list.add(N2);
list.add(N3);
list.add(N4);
list.add(N5);
return list; }
//冒泡排序方法实现
private static void BuboSort(Integer[] arr) {
//由第一个元素开始遍历直到数组长度-1,即最后一个元素,表示冒泡排序的趟数为元素个数减一
for(int i=0;i<arr.length-1;i++) {
//表示冒泡排序的次数
for(int j=0;j<arr.length-i-1;j++) {
int temp = 0;
//将更小的值冒泡至前面
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
效果截图:

ps:文章未完善,正在努力学习改进排序类方法的实现。
java-自定义数据排序的更多相关文章
- java中的排序(自定义数据排序)--使用Collections的sort方法
排序:将一组数据按相应的规则 排列 顺序 1.规则: 基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...
- Java自定义 sort 排序方法
Sort用法 •结构 1 package Test; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 import java.uti ...
- Java自定义数据验证注解Annotation
本文转载自:https://www.jianshu.com/p/616924cd07e6 Java注解Annotation用起来很方便,也越来越流行,由于其简单.简练且易于使用等特点,很多开发工具都提 ...
- sort函数使用自定义数据排序使用
package main import ( "fmt" "sort" ) type ServerSlice []Server type Server struc ...
- java学习-排序及加密签名时数据排序方式
排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...
- ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)
ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程 创建web工程 ...
- Java实现 LeetCode 791 自定义字符串排序(桶排序)
791. 自定义字符串排序 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那 ...
- Java案例——字符串中的数据排序
需求:有一个字符串"9 1 2 7 4 6 3 8 5 0",请编写程序实现从小到大数据排序 分析:最重要的部分是如何将字符串中的数据取出来 1.定义一个字符串为"9 1 ...
- java大数据最全课程学习笔记(6)--MapReduce精通(二)--MapReduce框架原理
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 MapReduce精通(二) MapReduce框架原理 MapReduce工作流程 InputFormat数据 ...
随机推荐
- tensorflow-线性函数训练例子一
import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...
- Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
在屏幕上绘制图形只是OpenGL的相当基础的特点,你也可以用其他的Android图形框架类来实现这些,包括Canvas和Drawable对象.OpenGL ES为在三维空间中移动和变换提供了额外的功能 ...
- SUSE12Sp3-Nginx安装
1.安装pcre(nginx 依赖) 把安装包pcre-8.12.tar.gz复制到服务器指定目录 tar -zxvf pcre-8.12.tar.gz # 解压 cd pcre-8.12 #进入目录 ...
- [Swift]LeetCode105. 从前序与中序遍历序列构造二叉树 | Construct Binary Tree from Preorder and Inorder Traversal
Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)
上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...
- mongo 删除 表中字段
查询语句 db.getCollection("A表").update( { } ,{ $unset:{"a":1} } , {multi: true} ) ...
- Python获取文件夹的名字
dir = "../data/20170308/221.176.64.146/" # root 文件夹下的所有文件夹(包括子文件夹)的路径名字../data/20170308/22 ...
- 8.Django缓存和信号
缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将某个views的返回值保存至内存或者memcache中, ...
- GitHub 1W star 成就达成!
起因 感谢各位大佬的支持收获了人生第一个(很有可能也是唯一一个)1W star 项目. 从今年一月份创建项目至今 8 个月时间. 一共关闭了 27 个 issue,47 个 RP,总共有 11 位小伙 ...
- C#版(击败100.00%的提交) - Leetcode 744. 寻找比目标字母大的最小字母 - 题解
C#版 - Leetcode 744. 寻找比目标字母大的最小字母 - 题解 744.Find Smallest Letter Greater Than Target 在线提交: https://le ...