测试List对象排序
实体类:
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对象排序的更多相关文章
- javascript数组对象排序
javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的s ...
- java对对象排序
一.前言 有时我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable<T>接口,然后调用Collections.so ...
- java 通用对象排序
一个排序类,一个排序util? no.no.no…… 使用反射机制,写了一个通用的对象排序util,欢迎指正. 实体类: package entity; public class BaseTypeEn ...
- Java - 简单的对象排序 - Comparator
注:对象排序,就是对对象中的某一字段进行比较,以正序或倒序进行排序. 例: 需要排序的对象: public class Person { public int age; public String n ...
- List对象排序的通用方法
转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...
- [个人原创]关于java中对象排序的一些探讨(三)
这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/ 对对象排序也可以使用Guava中的Ordering类. 构造Orderin ...
- 测试RegExp对象的属性
//测试RegExp对象的属性function testRegExpProperty(){ var regexp = /abc/; //regexp.ignoreCase = true; //无效 c ...
- list排序成员函数对string对象与char*对象排序的差别
对list容器中的对象排序,不能使用sort()算法,只能采用其自身的排序函数sort().因为,算法sort()只支持随机存取的容器的排序,如vector等. 对基本数据对象list排序:成员函数s ...
- Java集合中对象排序
集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...
随机推荐
- MongoDB使用固定集合
MongoDB中的固定集合:大小是固定的,类似于循环队列,如果没有空间了,最老的文档会被删除以释放空间,新插入的会占据这块空间. 1.固定集合(oplog) oplog是一个典型的固定集合,因为其大小 ...
- css---flex布局--容器
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 容器设置 新版的为display为flex ...
- Python自学:第四章 在for循环中执行更多操作(1)
# -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...
- Vim统计字符串出现次数
关键命令: :%s/pattern//gn 参数说明: % - 指明操作区间,%表示全文本:可以使用1,$或者行区间代替 s – substitute,表示替换 pattern - 要查找的字符串 / ...
- SpringBoot入门到出家
SpringBoot的Actuator监控 Actuator:对系统的监控 是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中, ...
- HDU-1492-The number of divisors(约数) about Humble Numbers -求因子总数+唯一分解定理的变形
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- 02.万恶之源-python 运算符和编码
一.流程控制语句if: 第一种语法: (最基本的语法) if 条件: 代码块/结果1 结果2 # 如果条件是真(True)执行结果为1,然后结果为2,如果条件为错(False), 直接结果2. 第二种 ...
- 宇宙最强 IDE:VS 2019 正式发布
作者:局长 来源:www.oschina.net/news/105629/ 如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 201 ...
- Django杂篇(2)
目录 Django杂篇(2) cookie与session cookie session django中间件 自定义中间件 跨站请求伪造(csrf) CSRF的解决方案 Django杂篇(2) 本文主 ...
- day06 tar命令使用,vim简单操作以及linux开机过程
上节课复习: cat: 查看全部文件内容 head: 从头查看文件内容,默认为前10行 tail: tail -f //动态查看文件是否增加内容 >> 追加 > 覆盖 more: 百 ...