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数据 ...
随机推荐
- ubuntu16.04开机时的.local问题
开机时显示:您的当前网络有.local域,我们不建议这样做而且这与AVAHI网络服务探测不兼容,该服务已被禁用 解决方法: 在终端输入:sudo gedit /etc/default/avahi-da ...
- ubuntu connect to windows folder share
在windows上给远程登录的用户设置一个账号密码.”右击计算机图标“——"管理”——“本地用户和组”——“用户”.然后右击选择“新用户”,输入账号密码,并勾选“密码永不过期”,这样,在远程 ...
- Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法, 由于 ...
- [Swift]LeetCode131. 分割回文串 | Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- [Swift]LeetCode424. 替换后的最长重复字符 | Longest Repeating Character Replacement
Given a string that consists of only uppercase English letters, you can replace any letter in the st ...
- 微信小程序中样式问题
1.去除button按钮的默认样式 这是button按钮自带的默认样式 button { position:relative; display:block; margin-left:auto; mar ...
- Xapian使用入门
关键字:搜索引擎.Xapian 一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘.读者需要对搜索引擎有初步了解,譬如了解倒排.term.doc.相似度打分等概 ...
- java在方法中获取request对象
在spring的普通类中: HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getReques ...
- RSA算法原理——(3)RSA加解密过程及公式论证
上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...
- Docker 容器资源限制
Docker 容器资源限制 默认情况下,一个容器并没有资源限制,并且该容器可以使用内核调度的所有资源.Docke提供了在启动容器时设置一些参数来控制该容器使用的内存.CPU和IO. 内存 OOME:在 ...