测试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 ...
随机推荐
- elasticsearch内存耗尽的问题
elasticsearch伤心几个月以来每星期都要抽风一次,突然间查询非常慢, 看下liunx的内存几乎被elasticsearch吃了个精光,就身下不到10M的内存. 开始按照网上给出的解决方案 ...
- 小白 Linux下安装Elasticsearch5.X
最近做个项目需要使用到 Elasticsearch5 刚接触liunx 遇到了很多问题记录下 以这篇文章为基础 http://www.cnblogs.com/ShawnYuki/p/6818677.h ...
- this 、typeof、false、parseInt()、this、arguments、Array和object判断
typeof typeof (undefined) 不会报错 undefined object Number boolean function String 返回值为字符串类型 false .fals ...
- python open函数关于w+ r+ 读写操作的理解(转)
r 只能读 (带r的文件必须先存在)r+ 可读可写 不会创建不存在的文件.如果直接写文件,则从顶部开始写,覆盖之前此位置的内容,如果先读后写,则会在文件最后追加内容.w+ 可读可写 如果文件存在 则覆 ...
- Arcmap中处理面图层中空白碎片
在面数据中,有时候在一个面要素中会出现碎片,而我们大多时候不希望这些碎片存在(图1),下面介绍通过Editor工具把这些碎片处理掉.
- 控制变量行业年份回归时在STATA里怎么操作_stata 分年份回归
控制变量行业年份回归时在STATA里怎么操作_stata 分年份回归 我希望做一个多元回归,但需要控制年份和行业. (1)年份有7年2006-2012,听说STATA可以自动设置虚拟变量,请问命令是怎 ...
- Git上传文件指北
PS:之前设置SSH密钥之类的步骤假设都已经完成,只需日常上传文件 1.仓库初始化 假设你已经新建好了一个仓库(New Repository),名为:RepoName 选择你代码所在的本地文件夹,鼠标 ...
- Bootstrap——设置Tab标签切换
最近一个小项目需要用Tab标签切换显示不同div内容,用到了Bootstrap里面的东西,但是在Bootstrap3教程里却没有找到对应的代码,这里记录一下,方便以后快速查阅学习. 代码如下: < ...
- iOS开发系列-文件上传
概述 Http协议对文件上传协议要求的 1. 必须设置请求头Content-Type为multipart/form-data.在iOS中后面需要跟上分隔符比如:boundary=----WebKitF ...
- 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器
title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...