测试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 ...
随机推荐
- mysql 查询当前日期
1.本年份 SELECT DATE_FORMAT(NOW(), '%Y'); 2.本月份(显示数字) SELECT DATE_FORMAT(NOW(), '%m'); 3.本月份(显示英文) SELE ...
- CSS——精灵技术
精灵技术产生的背景 图所示为网页的请求原理图,当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户. 然而,一个网页中往往会应用很多小的背景图像作为修饰,当网页中 ...
- day32--面向对象的程序设计之继承实现的原理(继承顺序)、封装、property
Python之路,Day19 = 面向对象的程序设计之继承实现的原理(继承顺序).封装.property 以下类容参考自:http://www.cnblogs.com/metianzing/p/712 ...
- TopCoder代码格式模板
$BEGINCUT$ $PROBLEMDESC$ $ENDCUT$ #include<bits/stdc++.h> using namespace std; class $CLASSNAM ...
- 8种形式的Android Dialog使用举例
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一 ...
- 牛客多校第四场 J Free 最短路
题意: 求最短路,但是你有k次机会可以把路径中某条边的长度变为0. 题解: 跑k+1次迪杰斯特拉,设想有k+1组dis数组和优先队列,第k组就意味着删去k条边的情况,每次松弛操作,松弛的两点i,j和距 ...
- Android按钮绑定四种方式
public class MainActivity extends Activity implements OnClickListener{ @Override protected void onCr ...
- IMS Call中的SS
1Hold procedure:对于每一个被HOLD的媒体流,SDP包含: 如果流之前被设置为“recvonly”媒体流则是一个“不活动”的SDP属性: 如果先前将流设置为“sendrecv”媒体流则 ...
- oracle增加用户密码,cmd导入数据库
1.tomcat中sql语句 用户名 pdmis 密码pdmis create USER pdmis IDENTIFIED BY pdmis;grant create session to pdmis ...
- 使用Python实现不同目录下文件的拷贝
目标:要实现将一台计算机的共享文件夹中的文件备份到另一台计算机,如果存在同名的文件只要文件的大小和最后修改时间一致,则不拷贝该文件 python版本:Python3.7.1 python脚本: fro ...