实体类:

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. Unix、Linux、Windows操作系统的区别

    1.操作区别 原文地址: https://blog.csdn.net/qq_41026740/article/details/96018808 linux区分大小写,windows在dos界面命令下不 ...

  2. DEDE采集时自动生成摘要和关键字

    1.修改 include/dedecollection.class.php //自动分析关键字和摘要 preg_match("/<meta[\s]+name=['\"]key ...

  3. http://www.2cto.com/ 红黑联盟

    http://www.2cto.com/ 红黑联盟,一个不错的学习或者开阔眼界的网站,内部由中文书写.比较适合国人.

  4. 最全的机器学习&深度学习入门视频课程集

    资源介绍 链接:http://pan.baidu.com/s/1kV6nWJP 密码:ryfd     链接:http://pan.baidu.com/s/1dEZWlP3 密码:y82m 更多资源 ...

  5. <Python基础>装饰器的基本原理

    1.装饰器 所谓装饰器一般是对已经使用(上线)的函数增加功能. 但是因为一般的大公司的严格按照开放封闭原则(对扩展是开放的,对修改是封闭的),不会让你修改原本的函数. 装饰器就是在不改变原本的函数且不 ...

  6. python基础语法(运算符及优先级)

    python基础语法(运算符及优先级) python语言支持的运算符类型 算数运算符 假设变量a为10,变量b为21 算数符 描述 实例 + 加-两个对象相加 a+b结果31 - 减-得到一个负数或者 ...

  7. MVC中DropDownListFor的使用注意事项

    1.在MVC的View页面中使用DropDownListFor时当DropDownListFor是列表是通过后台ViewBag传过来时,当ViewBag中的Key与DropDownListFor一致时 ...

  8. AbstractByteBuf 源码分析

    主要成员变量 static final ResourceLeakDetector<ByteBuf> leakDetector = new ResourceLeakDetector<B ...

  9. java中的Math类

    一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等 在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形.为了解决这个问题,Ja ...

  10. JavaScript特效源码(7、页面特效二)

    7.将站点加入频道栏 将站点加入频道栏[看详细说明] ====1.加入channel的方法:使用如下连接指向你的频道文件*.cdf. <a href="javascript:windo ...