zoukankan      html  css  js  c++  java
  • java-自定义数据排序

    导读:由于基本类型的数据都实现了一个共同的接口java.lang.Comparable接口,都实现了该接口下面的compareTo()方法,因此想要利用面向对象实现现实生活中的一些情景再现,比如新闻根据标题内容,点击量,更新日期等等进行排名。

    1.首先新建一个实体类,用于存放数据

     1 package com.etc;
     2 import java.text.DateFormat;
     3 import java.text.ParseException;
     4 import java.text.SimpleDateFormat;
     5 //新闻实体类,里面包含新闻标题,新闻的点击率,以及更新时间
     6 import java.util.Date;
     7 
     8 public class News {
     9     public String title;
    10     public int clickNum;
    11     public Date date;
    12     public News(String title, int clickNum, String date) {
    13         super();
    14         this.title = title;
    15         this.clickNum = clickNum;
    16         //将传入的String类型的日期进行转换
    17         DateFormat format=new SimpleDateFormat("yyyy-MM");
    18         try {
    19             this.date = format.parse(date);
    20         } catch (ParseException e) {
    21             e.printStackTrace();
    22         }
    23     }
    24 
    25     public News(String title) {
    26         this.title=title;
    27     }
    28 
    29     public String getTitle() {
    30         return title;
    31     }
    32     public void setTitle(String title) {
    33         this.title = title;
    34     }
    35     public int getClickNum() {
    36         return clickNum;
    37     }
    38     public void setClickNum(int clickNum) {
    39         this.clickNum = clickNum;
    40     }
    41     public Date getDate() {
    42         return date;
    43     }
    44     public void setDate(Date date) {
    45         this.date = date;
    46     }
    47 
    48 }

    2.具体排序类方法实现

      1 package com.etc;
      2 
      3 import java.util.ArrayList;
      4 import java.util.Arrays;
      5 import java.util.Date;
      6 import java.util.List;
      7 
      8 /**
      9  * 自定义实现数据排序
     10  * 例:新闻数据信息排序
     11  * 1.按照点击率Integer排序
     12  * 2.按照标题信息String排序
     13  * 3.可以将时间数组转String数组同样实现类似2的排序
     14  */
     15 public class CustomizeSort {
     16 
     17     public static void main(String[] args) {
     18         SortByclickNum();
     19         SortByTitle();
     20         getDate();
     21     }
     22     //自定义实现根据新闻点击量将新闻标题排序
     23     public static void SortByclickNum() {
     24         //获取数据
     25         List<News> list=setData();
     26         List<Integer> ls=new ArrayList<Integer>();
     27         System.out.println("点击量数据为:");
     28         //将数据放入集合中以便存储
     29         for(int i=0;i<list.size();i++) {
     30             ls.add(list.get(i).clickNum);
     31             System.out.print(ls.get(i)+" "+"
    ");
     32         }
     33         Integer[] in=new Integer[ls.size()];
     34         for(int j=0;j<ls.size();j++) {
     35             in[j]=ls.get(j);
     36         }
     37         //冒泡排序
     38         BuboSort(in);
     39         //打印结果
     40         System.out.println("冒泡最终结果:"+Arrays.toString(in));
     41 
     42     }
     43 
     44     public static void getDate() {
     45         //获取数据
     46         List<News> list=setData();
     47         List<Date> ls=new ArrayList<Date>();
     48         System.out.println("更新日期数据为:");
     49         for(int i=0;i<list.size();i++) {
     50             ls.add(list.get(i).date);
     51             System.out.print(ls.get(i)+" "+"
    ");
     52         }
     53     }
     54 
     55     //这里实现将新闻的标题获取,并根据标题名进行排序
     56     private static void SortByTitle() {
     57         //获取数据
     58         List<News> list=setData();
     59         List<String> ls=new ArrayList<String>();
     60         System.out.println("标题名称数据为:");
     61         for(int i=0;i<list.size();i++) {
     62             ls.add(list.get(i).title);
     63             System.out.print(ls.get(i)+" "+"
    ");
     64         }
     65         String[] str = new String[ls.size()];
     66         for(int j=0;j<ls.size();j++) {
     67             str[j]=ls.get(j);
     68         }
     69         //借助compareTo()方法实现另一种形式的冒泡
     70         for(int m=0;m<str.length;m++) {
     71             for(int n=m;n<str.length;n++) {
     72                 if(str[n].compareTo(str[m])<0) {
     73                     //将较小的值放置于前面
     74                     String temp=null;
     75                     temp=str[m];
     76                     str[m]=str[n];
     77                     str[n]=temp;
     78                 }
     79             }
     80         }
     81         System.out.println("冒泡结果为:"+Arrays.toString(str));
     82     }
     83 
     84     //新闻信息初始化数据输入,以集合的形式存放数据
     85     public static List<News> setData() {
     86         List<News> list=new ArrayList<News>(); 
     87         News N1=new News("新闻A",1000,"2019-04");
     88         News N2=new News("新闻B",1500,"2019-05");
     89         News N3=new News("新闻D",1800,"2019-03");
     90         News N4=new News("新闻F",900,"2019-11");
     91         News N5=new News("新闻C",800,"2019-9");
     92         list.add(N1);
     93         list.add(N2);
     94         list.add(N3);
     95         list.add(N4);
     96         list.add(N5);
     97         return list;
     98 
     99     }
    100     //冒泡排序方法实现
    101     private static void BuboSort(Integer[] arr) {
    102         //由第一个元素开始遍历直到数组长度-1,即最后一个元素,表示冒泡排序的趟数为元素个数减一
    103         for(int i=0;i<arr.length-1;i++) {
    104             //表示冒泡排序的次数
    105             for(int j=0;j<arr.length-i-1;j++) {
    106                 int temp = 0;
    107                 //将更小的值冒泡至前面
    108                 if(arr[j]>arr[j+1]) {
    109                     temp=arr[j];
    110                     arr[j]=arr[j+1];
    111                     arr[j+1]=temp;
    112                 }
    113             }  
    114         }
    115     }
    116 }

    效果截图:

     

    ps:文章未完善,正在努力学习改进排序类方法的实现。

  • 相关阅读:
    asp.net后台导出excel的方法:使用response导出excel
    asp.net后台导出excel的方法一:使用response导出excel
    infragistics--web网站升级注意点
    infragistics--网站部署时webtab的tab前出现textbox
    Jewels and Stones
    To Lower Case
    Unique Email Addresses
    unique-morse-code-words
    很久没来博客园了。。。。
    Centos7 基础知识---------root文件夹下没有.ssh文件
  • 原文地址:https://www.cnblogs.com/weekstart/p/10778298.html
Copyright © 2011-2022 走看看