实体类:

package test;

public class NightlyRate {

    private String rate;

    public String getRate() {
return rate;
} public void setRate(String rate) {
this.rate = rate;
}
public NightlyRate(String rate){
this.rate = rate;
}
}
package test;

import java.util.List;

public class RateInfo {

    private String name;

    private List<NightlyRate> nightlyRates;

    public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<NightlyRate> getNightlyRates() {
return nightlyRates;
} public void setNightlyRates(List<NightlyRate> nightlyRates) {
this.nightlyRates = nightlyRates;
}
public RateInfo(String name){
this.name = name;
}
public RateInfo(String name,List<NightlyRate> nightlyRates){
this.name = name;
this.nightlyRates = nightlyRates;
}
}

测试类:

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; import aA.RandomDemo;
/**
*
* @Description:测试List排序
* @date 2018年7月16日,下午11:10:14
*/
public class testDemo { public static void main(String[] args) {
//List<RateInfo>的容量,最大容量:29300则nightNum最大容量为:5
//rateNum容量与nightNum容量成反比
int rateNum = 2000; //List<NightlyRate>的容量
int nightNum = 20;
List<RateInfo> rList = new ArrayList<RateInfo>();
System.out.println("********************《start添加原始数据》************************************");
//添加原始数据
for(int i=0;i<rateNum;i++){
List<NightlyRate> nightlyRates = new ArrayList<NightlyRate>();
for(int j = 0;j<nightNum;j++){
NightlyRate nightlyRate = new NightlyRate(RandomDemo.getRandom(4,RandomDemo.TYPE.NUMBER));
nightlyRates.add(nightlyRate);
}
rList.add(new RateInfo(RandomDemo.getRandom(10,RandomDemo.TYPE.LETTER_CAPITAL),nightlyRates));
} //原始数据的输出
for (RateInfo rateInfo : rList) {
System.out.println("RateInfo原始数据:"+rateInfo.getName());
System.out.print(" ----> "+"排序前价格:");
for(int j = 0;j<nightNum;j++){
System.out.print(rateInfo.getNightlyRates().get(j).getRate()+",");
}
System.out.println();
}
System.out.println("********************《end添加原始数据》***************************************");
System.out.println();
sortList(rList, nightNum, rateNum);
} /**
*
* @Description: 集合排序(rList(保存RateInfod对象)中有一个List的属性 nightlyRates(保存NightlyRate对象)
* 首先给属性nightlyRates排序,然后再个rList根据排好序的属性nightlyRates第一个对象进行排序)
* @param @param rList
* @param @param nightNum
* @param @param rateNum
* @return void
* @throws
*/
public static void sortList(List<RateInfo> rList,int nightNum,int rateNum){
long start;
long end;
long sortInTime = 0;
long sortOutTime = 0;
System.out.println("*******************《start RateInfo内属性价格排序》***************************");
for (RateInfo rateInfo : rList) {
//进行价格排序
start = System.currentTimeMillis();
Collections.sort(rateInfo.getNightlyRates(), new Comparator<NightlyRate>() {
public int compare(NightlyRate R1, NightlyRate R2) {
Integer rateCode1 = Integer.parseInt(R1.getRate());
Integer rateCode2 = Integer.parseInt(R2.getRate());
if (rateCode1 > rateCode2) {
return 1;
}
if (rateCode1 == rateCode2) {
return 0;
}
return -1;
}
});
// Collections.sort(rateInfo.getNightlyRates(), Comparator.comparing(NightlyRate::getRate));
end = System.currentTimeMillis();
sortInTime = end-start;
System.out.println("RateInfo数据内容排序getNightlyRates()价格:"+rateInfo.getName());
System.out.print(" ----> "+"排序后价格:");
for(int j = 0;j<nightNum;j++){
System.out.print(rateInfo.getNightlyRates().get(j).getRate()+",");
}
System.out.println();
}
System.out.println("*******************《end RateInfo内属性价格排序》****************************");
System.out.println();
System.out.println("**********************《start RateInfo排序》********************************");
start = System.currentTimeMillis();
Collections.sort(rList, new Comparator<RateInfo>() {
public int compare(RateInfo R1, RateInfo R2) {
Integer rateCode1 = Integer.parseInt(R1.getNightlyRates().get(0).getRate());
Integer rateCode2 = Integer.parseInt(R2.getNightlyRates().get(0).getRate());
if (rateCode1 > rateCode2) {
return 1;
}
if (rateCode1 == rateCode2) {
return 0;
}
return -1;
}
});
end = System.currentTimeMillis();
sortOutTime = end-start;
for(int i=0;i<rateNum;i++){
System.out.println("RateInfo的getNightlyRates()的第一个对象数据排序:"+rList.get(i).getName());
System.out.print(" ----> "+"排序后价格:");
for(int j = 0;j<nightNum;j++){
System.out.print(rList.get(i).getNightlyRates().get(j).getRate()+",");
}
System.out.println();
}
System.out.println("**********************《end RateInfo排序》**********************************");
System.out.println("RateInfo内部价格排序运行时间:"+sortInTime);
System.out.println("RateInfo排序运行时间:"+sortOutTime);
}
}

测试结果:

  

测试List对象排序的更多相关文章

  1. javascript数组对象排序

    javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的s ...

  2. java对对象排序

    一.前言 有时我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable<T>接口,然后调用Collections.so ...

  3. java 通用对象排序

    一个排序类,一个排序util? no.no.no…… 使用反射机制,写了一个通用的对象排序util,欢迎指正. 实体类: package entity; public class BaseTypeEn ...

  4. Java - 简单的对象排序 - Comparator

    注:对象排序,就是对对象中的某一字段进行比较,以正序或倒序进行排序. 例: 需要排序的对象: public class Person { public int age; public String n ...

  5. List对象排序的通用方法

    转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...

  6. [个人原创]关于java中对象排序的一些探讨(三)

    这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/ 对对象排序也可以使用Guava中的Ordering类. 构造Orderin ...

  7. 测试RegExp对象的属性

    //测试RegExp对象的属性function testRegExpProperty(){ var regexp = /abc/; //regexp.ignoreCase = true; //无效 c ...

  8. list排序成员函数对string对象与char*对象排序的差别

    对list容器中的对象排序,不能使用sort()算法,只能采用其自身的排序函数sort().因为,算法sort()只支持随机存取的容器的排序,如vector等. 对基本数据对象list排序:成员函数s ...

  9. Java集合中对象排序

    集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...

随机推荐

  1. 【学术篇】NOIP2017 d2t3 列队phalanx splay做法

    我可去他的吧.... ==============先胡扯些什么的分割线================== 一道NOIP题我调了一晚上...(其实是因为昨晚没有找到调试的好方法来的说...) 曾经我以 ...

  2. vue3环境搭建以及创建简单项目。

    1.环境准备,以下都是我的版本.自己在官网上面下载需要的版本. 尝试了Python3.7.3在创建vue3项目时出现问题. node.js10.16.0, python2.7.16, yarn1.16 ...

  3. Leetcode - K Sum

    List<List<Integer>> kSum_Trim(int[] a, int target, int k) { List<List<Integer>& ...

  4. SpringMVC的孪生兄弟WebFlux

    一.入门文字介绍 官方口水话简短翻译: Spring WebFlux是一个非阻塞的Web框架,用于利用多核,短时间可一处理大量并发连接. 非阻塞式 在servlet3.1提供了非阻塞的API,WebF ...

  5. [CTSC2018]青蕈领主

    [CTSC2018]青蕈领主 题解 首先,连续段要知道结论: 连续段要么不交,要么包含 所以是一棵树!每个位置的father是后面第一个包含它的 树形DP! 设dp[x],x为根的子树,(设管辖的区间 ...

  6. java.sql.SQLSyntaxErrorException: ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY

    2019-07-24 17:24:35 下午 [Thread: http-8080-4][ Class:net.sf.ehcache.store.disk.Segment Method: net.sf ...

  7. Java 10的10个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  8. 【bzoj 3489】A simple rmq problem

    题目 \(kdt\)就是数点神器 我们先扫两遍处理出每个数上一次出现的位置\(pre_i,nxt_i\),之后变成\((i,pre_i,nxt_i)\)这样一个三维空间上的点 就变成了求一个立方体的最 ...

  9. 锐速与BBR的原理简单解析

    锐速与BBR的原理简单解析  4 前言 昨天,有一位朋友在我的文章下留言说,锐速和BBR不都是一样,是拥塞算法嘛.因为这方面需要讲的东西比较多,所以我还是专门水一篇文章吧. 锐速 参考资料: http ...

  10. [记录]Wdinwos scikit-learn 安装

    安装的软件有: Python: 3.6.0 numpy-1.11.3+mkl-cp36-cp36m-win_amd64.whl(全名) scipy-0.19.0-cp36-cp36m-win_amd6 ...