导读:由于基本类型的数据都实现了一个共同的接口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. 1.1 What is the plug-in?

          A game center, such as Lianzhong in China, supports hundreds of games such as Chess, Bridges, ...

  2. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

  3. Jenkins构建集成部署

    一.可运行Jar配置 1. 设置JDK 2. 设置源码 设置构建脚本 #!/bin/bash export BUILD_ID=xxxxxx_content_170 myPath="/data ...

  4. 发一些Java面试题,上海尚学堂Java学员面试遇到的真题,值得学习

    1. 下面哪些是Thread类的方法() A start()       B run()       C exit()       D getPriority() 答案:ABD 解析:看Java AP ...

  5. Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案

    Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案 环境: Ubuntu 14.04 LTS 解决方案是 ibus-Rime 输入法, 再加上搭配自然码的配置表 (1) ibus 首先安装 ...

  6. Java Jvm运行机制原理

    一:简介 在学习Java虚拟机之前,也就是Jvm之前,我想大家能够带着问题去学习,这样的话,大家学习起来也会比较有所获! 1.Java虚拟机(Jvm)是什么? 2.Java虚拟机是用来干什么的? 3. ...

  7. 甘果移动老甘:移动互联网变迁中的App和小程序

    2018 年 10 月13 日,由又拍云和知晓云联合主办的 Open Talk 丨2018 小程序开发者沙龙系列活动广州站拉开帷幕,甘果移动的 CEO 路文杰(老甘)在沙龙上做了<移动互联网变迁 ...

  8. 死磕 java集合之WeakHashMap源码分析

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 WeakHashMap是一种弱引用map,内部的key会存储为弱引用,当jvm gc的时 ...

  9. 【java爬虫】---爬虫+jsoup轻松爬博客

    爬虫+jsoup轻松爬博客 最近的开发任务主要是爬虫爬新闻信息,这里主要用到技术就是jsoup,jsoup 是一款 Java的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非 ...

  10. 不懂这些高并发分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构

    互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对高并发分布式系统设计.架构(数据一致性)做了分析,祝各位早日走上 ...