导读:由于基本类型的数据都实现了一个共同的接口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. CannyLab/tsne-cuda with cuda-10.0

    t-SNE-CUDA Barnes-Hut t-SNE https://github.com/CannyLab/tsne-cuda/projects 做数据降维时常用到,但计算较慢,所以可用cuda加 ...

  2. 1.5 A better alternative thing: React Native

    In 2015, React Native (RN) was born. At that time, few people paid attention to it because it was st ...

  3. Dubbo 分布式事务一致性实现

    我觉得事务的管理不应该属于Dubbo框架, Dubbo只需实现可被事务管理即可, 像JDBC和JMS都是可被事务管理的分布式资源, Dubbo只要实现相同的可被事务管理的行为,比如可以回滚, 其它事务 ...

  4. MySQL 千万级 数据库或大表优化

    首先考虑如下因素: 1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节: 2.数据项:是否有大字段,那些字段的值是否经常被更新: 3.数据查询SQL条件:哪些数据项的列名称经常出现在WH ...

  5. 如何利用GitHub搜索敏感信息

    如何利用GitHub搜索敏感信息 背景: 最近总是能听到同事说在GitHub上搜到某个敏感信息,然后利用该信息成功的检测并发现某个漏洞,最后提交到对应的SRC(安全应急响应中心)换点money.顿时心 ...

  6. [Swift]LeetCode166. 分数到小数 | Fraction to Recurring Decimal

    Given two integers representing the numerator and denominator of a fraction, return the fraction in ...

  7. [Swift]LeetCode706. 设计哈希映射 | Design HashMap

    Design a HashMap without using any built-in hash table libraries. To be specific, your design should ...

  8. Xamarin.Android 水平对齐与垂直对齐

    水平对齐: 1.LinearLayout添加属性:android:orientation="vertical": 2.元件添加属性:android:layout_gravity=& ...

  9. spark使用udf给dataFrame新增列

    在 spark 中给 dataframe 增加一列的方法一般使用 withColumn // 新建一个dataFrame val sparkconf = new SparkConf() .setMas ...

  10. ElasticSearch(1)---Mysql同步数据到ElSearch

    ElasticSearch同步Mysql 先讲项目需求:对于资讯模块添加搜索功能 这个搜索功能我就是采用ElasticSearch实现的,功能刚实现完,所以写这篇博客做个记录,让自己在记录下整个步骤和 ...