当前位置:  编程技术>综合
本页文章导读:
    ▪map集合排序      主要参考jdk的: java.util 类 Collections java.lang.Object java.util.Collections public static <T> void sort(List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定.........
    ▪使用DOS下的FC命令比较两个文件的异同      在提交今天代码的时候,碰到了一个修改,但是SVN出了点问题,就想到了UE的比较文件功能,看见UE熟悉的界面,感慨,UE真的是个好东西,比如删除空行啦,正则替换啦,行列编辑啦,还有各.........
    ▪第七章 分组报表      7.1 分组的建立,插入,删除 我们先构建报表,空白模板,示例数据库和sql查询数据源,数据集setOrders,如下 select CLASSICMODELS.CUSTOMERS.CUSTOMERNAME, CLASSICMODELS.ORDERS.ORDERNUMBER, CLASSICMODELS.ORDERS.ORD.........

[1]map集合排序
    来源:    发布时间: 2013-11-10

主要参考jdk的:

java.util
类 Collections
java.lang.Object
  java.util.Collections
public static <T> void sort(List<T> list,
                            Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元素,c.compare(e1, e2) 不得抛出 ClassCastException)。

此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。

排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。

 

参数: list - 要排序的列表。 c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。 抛出: ClassCastException - 如果列表中包含不可使用指定比较器相互比较 的元素。 UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。

指定排序规则对象

import java.util.Comparator;
import java.util.Map;

public class CompareSort implements Comparator<Object> {

	@Override
	public int compare(Object o1, Object o2) {
		Map.Entry map1=(Map.Entry)o1;
		Map.Entry map2=(Map.Entry)o2;
		System.out.println(map1.getKey().toString().compareTo(map2.getKey().toString()));
		return map1.getKey().toString().compareTo(map2.getKey().toString());
		
	}
}

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapSort {

	public static void main(String[] args) {
		Map<String, String> map=new HashMap<String, String>();
		map.put("1", "qw");
		map.put("a", "sdf");
		map.put("r", "qw");
		map.put("g", "sdf");
		map.put("b", "qw");
		map.put("j", "sdf");
		System.out.println(map);
		//先将map转换为List类型
		List list=new ArrayList(map.entrySet());
		//然后再对list进行排序处理
		Collections.sort(list, new CompareSort());
		System.out.println(list);
	}
}

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
[2]使用DOS下的FC命令比较两个文件的异同
    来源: 互联网  发布时间: 2013-11-10
在提交今天代码的时候,碰到了一个修改,但是SVN出了点问题,就想到了UE的比较文件功能,看见UE熟悉的界面,感慨,UE真的是个好东西,比如删除空行啦,正则替换啦,行列编辑啦,还有各种开发环境的支持,我真的离不开UE这个软件提供的强大功能了,UE让我太懒惰了。

离开了UE,我们还是有“比较文件”的功能的!

它就是DOS的 fc 命令:

E:\chenzw>help fc
比较两个文件或两个文件集并显示它们之间的不同

FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]
   [drive1:][path1]filename1 [drive2:][path2]filename2
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2

  /A         只显示每个不同处的第一行和最后一行。
  /B         执行二进制比较。
  /C         不分大小写。
  /L         将文件作为 ASCII 文字比较。
  /LBn       将连续不匹配的最大值设置为指定的行数。
  /N         在 ASCII 比较上显示行数。
  /OFF[LINE] 不要跳过带有脱机属性集的文件。
  /T         不要将制表符扩充到空格。
  /U         将文件作为 UNICODE 文本文件比较。
  /W         为了比较而压缩空白(制表符和空格)。
  /nnnn      指定不匹配处后必须连续匹配的行数。
  [drive1:][path1]filename1
             指定要比较的第一个文件或第一个文件集。
  [drive2:][path2]filename2
             指定要比较的第二个文件或第二个文件集。

例子:
E:\chenzw>fc 2.txt 3.txt
正在比较文件 2.txt 和 3.TXT
***** 2.txt
blog.csdn.net/ziwen00你好
blog.csdn.net/ziwen00
***** 3.TXT
blog.csdn.net/ziwen00
blog.csdn.net/ziwen00
*****
作者:ziwen00 发表于2013-1-8 16:57:45 原文链接
阅读:0 评论:0 查看评论

    
[3]第七章 分组报表
    来源: 互联网  发布时间: 2013-11-10
7.1 分组的建立,插入,删除

我们先构建报表,空白模板,示例数据库和sql查询数据源,数据集setOrders,如下

select

CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,

CLASSICMODELS.ORDERS.ORDERNUMBER,

CLASSICMODELS.ORDERS.ORDERDATE,

CLASSICMODELS.ORDERS.STATUS,

CLASSICMODELS.ORDERDETAILS.QUANTITYORDERED,

CLASSICMODELS.ORDERDETAILS.PRICEEACH

from

CLASSICMODELS.CUSTOMERS,

CLASSICMODELS.ORDERS,

CLASSICMODELS.ORDERDETAILS

where

CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER = CLASSICMODELS.ORDERS.CUSTOMERNUMBER

and

CLASSICMODELS.ORDERS.ORDERNUMBER = CLASSICMODELS.ORDERDETAILS.ORDERNUMBER

我们要先以客户名称分组,再以订单号分组:


那么我们在布局好了普通网格报表之后,在详细行上右击,选择插入分组

首先插入分组grpCustomerName,分组依据CUSTOMERNAME,目录的项目表达式为:row["CUSTOMERNAME"] + ": $(" + row["CUSTOMERTOTAL"].toFixed(2) + ")USD"


3. 设置分组的属性:

� 输入该分组的名称,该名称唯一标识该组,而且该名称会出现在右键菜单“编辑组”当中,您可以非常方便的编辑指定的组。

� 选择分组依据。在下拉框中给您列出了当前表所绑定的所有列,这些列可以不在表中显示。选择数据集上的可用列作为一个分组或者用表达式生成器去构建一个数据绑定作为分组依据

� 设置分组间隔。您可以设置一种分组间隔类型,然后指定分组间隔值。关于如何设置间隔,请参考后面小节“按间隔分组数据”。

� 设置是否要隐藏详细信息。您可以选中该复选框来隐藏表格当中的明细信息,从而只显示组头或组尾的汇总数据。

� 设置目录的项目表达式。项目表达式:指定目录的标题的表达式,可以选择数据集上的可用列作为一个分组或者用表达式生成器去构建一个数据绑定作为分组依据,样式用来指定标题的样式

� 设置排序方向。选择数据分组后,各组按升序还是降序排列。

� 设置分页。您可以设置报表在什么位置分页。如果您想让每组数据都在单独的页面上显示,那么您可以在组之前或之后设置一下分页。

� 设置筛选。您可以添加一个或多个筛选对组中的数据进行筛选。

� 设置排序。您可以设置组内数据的排序。


排序方向:用于指定分组的排序

换页:用于指定换页之后是否重复标题

排序与过滤:用于指定排序的依据和过滤的依据

我们再插入分组grpOrderNumber,分组依据ORDERNUMBER,目录的项目表达式为:"Order Number: " + row["ORDERNUMBER"] + "\n$(" + row["ORDERTOTAL"].toFixed(2) + ")USD"


做适当的布局:


其中:

TOTALSALE绑定:dataSetRow["QUANTITYORDERED"] * dataSetRow["PRICEEACH"]

ORDERTOTAL绑定:Total.sum(row["TOTALSALE"])

CUSTOMERTOTAL绑定:Total.sum(row["TOTALSALE"])

做适当的页面美化,我们就能看到这样的预览效果


7.2 分组的排序与过滤

如果没有添加排序依据,那么就依据默认的排序单选进行排序


如果添加有排序依据,则会覆盖默认的排序依据:


其中,分组的键可以用分组依据,也可以用表达式生成器构建;

方向可以是升序或是降序;

语言环境选自动即可;

排序依据必须是和分组依据一一关联的,不能是多对一,比如本分组不能使用row["ORDERDATE"],否则排序依据失效;

有多个排序依据时则依照sql的排序依据顺序执行;

过滤器: 


其中筛选条件中的表达式生成器可以是分组的字段,也可以是表达式生成器生成的

注意的是过滤依据必须是和分组依据一一关联的,不能是多对一,比如本分组不能使用row["ORDERDATE"],否则过滤依据失效;

这样我们就筛选出销售额前3名的客户分组。

我们还可以构建多个筛选条件。

7.3 分组的间隔,聚合,可视性,映射,突出显示,书签

    当您创建分组时,BIRT报表默认是按每个分组依据值来分组数据的,比如一个客户名,一个国家名,或者一个日期。在前面我们创建的客户信息表中,BIRT报表将每个国家作为一组,在每组下面列出这个国家所有客户信息。有时按指定的间隔来分组数据更加有用。比如说一张销售报表可以按季度来分组销售数据,而不是按照详细的日期分组。同样您也可以按周或月来分组发货报表,而非按照详细的日期。

比较下面两张报表,第一张将订单信息按详细的日期分组,而第二张报表则按月份来分组订单信息。



通过上面两张报表您可以看到,有些时候设置分组间隔能够更好的组织数据,更加便于用户查看:

� 设置分组间隔可以将很长的报表分隔成为许多短小的,更便于阅读的“块”。

� 设置分组间隔可以对该间隔期的数据进行汇总,更便于分析。

下面给您更加详细的介绍如何设置分组依据为字符串、数值与时间日期的分组间隔

设置字符串的分组间隔

当您设置分组字符串数据的分组间隔时,该分组间隔是一个特定长度的字符串前缀。比如将客户信息按客户名分组,您可以按照客户名的第一个字母,前两个字母等来分组。

一般情况下,报表在显示名字/名称列表时,会按名字/名称的第一个字母来分组。比如一张客户信息表,我们会将客户信息按它们名称的第一个字母来分组,名称以A 开头的客户分为一组,以B 开头的客户分为一组,以此类推。您还可以设置多个字母间隔来对字符串分组,来将那些名称里面包含多个特定字母的前缀按这个前缀分组。比如一个产品名称中,可能开头两个字母表示供应商,如ME, MO 等,那么我们就可以按前两个字母前缀来对产品名称分组。下面就是我们按一个字母前缀、两个字母前缀、三个字母前缀来对客户名称分组的例子。


设置字符串分组间隔

1. 首先按前面小节中介绍的步骤来创建分组,分组依据为字符串类型。

2. 在间隔中设置“前缀”,

3. 在“区域”中设置需要按前几个字符作为前缀来对字符串分组。

我们建立数据集customer:

select CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,CLASSICMODELS.CUSTOMERS.CONTACTLASTNAME,CLASSICMODELS.CUSTOMERS.PHONE,CLASSICMODELS.CUSTOMERS.ADDRESSLINE1,CLASSICMODELS.CUSTOMERS.CITY,CLASSICMODELS.CUSTOMERS.STATE,CLASSICMODELS.CUSTOMERS.COUNTRY,CLASSICMODELS.CUSTOMERS.CREDITLIMIT

from CLASSICMODELS.CUSTOMERS




当您对数值数据分组时,您也可以设置分组间隔。比如您制作订单信息表时,当订单号为数值型时,可以按订单号每50&nb

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3