导读:由于基本类型的数据都实现了一个共同的接口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-自定义数据排序的更多相关文章

  1. java中的排序(自定义数据排序)--使用Collections的sort方法

    排序:将一组数据按相应的规则 排列 顺序 1.规则:       基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...

  2. Java自定义 sort 排序方法

    Sort用法 •结构 1 package Test; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 import java.uti ...

  3. Java自定义数据验证注解Annotation

    本文转载自:https://www.jianshu.com/p/616924cd07e6 Java注解Annotation用起来很方便,也越来越流行,由于其简单.简练且易于使用等特点,很多开发工具都提 ...

  4. sort函数使用自定义数据排序使用

    package main import ( "fmt" "sort" ) type ServerSlice []Server type Server struc ...

  5. java学习-排序及加密签名时数据排序方式

    排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...

  6. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)

    ElasticSearch6.0  Java API  使用     排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程  创建web工程 ...

  7. Java实现 LeetCode 791 自定义字符串排序(桶排序)

    791. 自定义字符串排序 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那 ...

  8. Java案例——字符串中的数据排序

    需求:有一个字符串"9 1 2 7 4 6 3 8 5 0",请编写程序实现从小到大数据排序 分析:最重要的部分是如何将字符串中的数据取出来 1.定义一个字符串为"9 1 ...

  9. java大数据最全课程学习笔记(6)--MapReduce精通(二)--MapReduce框架原理

    目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 MapReduce精通(二) MapReduce框架原理 MapReduce工作流程 InputFormat数据 ...

随机推荐

  1. Content-Type: application/www-form-urlencoded

    默认的方式 1.Content-Type: application/www-form-urlencoded id=3&fgf=56&908rr=767 2.Content-Type:a ...

  2. Ajax刷新DIV内容

    Ajax刷新DIV内容 实现了网页的异步数据处理,不用刷新整个页面 <标签 onmouseover="method"/ >method:这个参数是处理onmouseov ...

  3. Json----简单介绍

    Json 先分享一个网站http://www.bejson.com/,这个是用来检测Json文件的错误的,Json文件一般不好查找错误. 看懂Json只需要四句话: 对象表示为键值对 数据由逗号分隔 ...

  4. three.js的wave特效(ivew官网首页波浪特效实现)

    查看效果请访问:https://521lbx.github.io/Web3D/index.html公司的好几个vue项目都是用ivew作为UI框架,所以ivew官网时不时就得逛一圈.每一次进首页都会被 ...

  5. WARN [wxpay java sdk] - report fail. reason: report.mch.weixin.qq.com:80 failed to respond

    最近小程序接口 tomcat日志经常出现此类警告 WARN [wxpay java sdk] - report fail. reason: report.mch.weixin.qq.com:80 fa ...

  6. div里包含img底部多出3px的解决办法

    如果将一个img放在div里面,你会发现在img下面无端端的就多出3px的空白出来.padding.margin.border都设为0,无效!那么怎么解决这个问题呢? 问题图: 解决后的效果: 这个B ...

  7. JavaScript 异步编程的前世今生(下)

    ES6 中的 Generator 在 ES6 出现之前,基本都是各式各样类似Promise的解决方案来处理异步操作的代码逻辑,但是 ES6 的Generator却给异步操作又提供了新的思路,马上就有人 ...

  8. FFmpeg 结构体学习(二): AVStream 分析

    在上文FFmpeg 结构体学习(一): AVFormatContext 分析我们学习了AVFormatContext结构体的相关内容.本文,我们将讲述一下AVStream. AVStream是存储每一 ...

  9. [Swift]LeetCode482. 密钥格式化 | License Key Formatting

    You are given a license key represented as a string S which consists only alphanumeric character and ...

  10. [Swift]LeetCode799. 香槟塔 | Champagne Tower

    We stack glasses in a pyramid, where the first row has 1 glass, the second row has 2 glasses, and so ...