jfreechartjava集合培训.ppt

上传人:本田雅阁 文档编号:2038465 上传时间:2019-02-07 格式:PPT 页数:34 大小:370.01KB
返回 下载 相关 举报
jfreechartjava集合培训.ppt_第1页
第1页 / 共34页
jfreechartjava集合培训.ppt_第2页
第2页 / 共34页
jfreechartjava集合培训.ppt_第3页
第3页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《jfreechartjava集合培训.ppt》由会员分享,可在线阅读,更多相关《jfreechartjava集合培训.ppt(34页珍藏版)》请在三一文库上搜索。

1、YHCIP技术培训,研发中心:林隆永,培训内容,Jfreechart图表开发 Java集合框架 工程发布,图表开发,Jfreechart简介,开源的JAVA项目 http:/www.jfree.org/jfreechart/ 作用 制作各种各样的图表。如饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等 使用环境 Servlet、JSP、Applet、Java Appication,目标,对Jfreechart的图表开发有一定的认识 大概了解Jfreechart的类结构 掌握YHCIP图表的开发过程,图表组成,标题,副标题,图表区(render),Y

2、轴(rangeAxis),X轴 (domainAxis),图示,图片区(plot),核心类,图表开发三步骤,准备数据源 创建JfreeChart类对象(图片对象) 显示图片,数据源,二维数据,数据源,三维数据,数据源,创建图片对象,由ChartFactory工厂类创建各种图表对象 例子:JFreeChart chart = ChartFactory.createBarChart( “Bar Chart Demo”, / 图标标题 “Category”, / x轴名称 “Value”, / y轴名称 dataset, / 数据源 PlotOrientation.VERTICAL,/摆放方向(垂直

3、) true, / 是否显示图示 true, / 是否显示提示(鼠标移过提示) false / 是否提供链接 );,属性设置,chart对象属性设置 整个图片属性设置,比如图片背景,边框,标题,子标题等。 Plot对象属性设置(看代码示例BarExample.java) 图片的图表部分属性设置 X轴对象设置 Y轴对象设置 图表渲染器(renderer) 鼠标移过提示(tooltips ) 链接,YHCIP图表开发,三个步骤 准备数据源 例子:在sqlmap中写查询sql,每条记录的结果为HashMap。 select b.aaa103 as aaa103, count(a.aab020) as

4、 aab020 from ab01 a,bm_aab020 b where a.aab020 = b.aab020 group by a.aab020,b.aaa103 ,YHCIP图表开发,创建图表对象 OutputDTO outputDTO = ab01Bpo.getPieList(cForm.getInputDTO(us); List list = outputDTO.getDefaultList(); JFreeChart chart = YHChart.createPie3D( “单位类型比例“, list, “aaa103“,“aab020“); /DefaultPieDatase

5、t ds = DataSetUtil.toPie(list,“aaa103“,“aab020“) /JFreeChart chart = YHChart.createPie3D(“单位类型比例“, ds); request.getSession().setAttribute(“chart“,chart);,YHCIP图表开发,显示图片 注意: yhchartimgMap中的name属性值必须和usemap属性值一样。 同一个页面如果有多个图表,名称不能相同。,总结,Jfreechart开发步骤 常用类介绍,数组 Collection List Set Map,容器类图,数组和其它容器的区别,效

6、率 数组是一种效率很高的存储和随机访问对象引用序列的方式 一个简单的线性序列 大小就固定 类型 数组可可以保存基本类型,容器不行 保存基本类型的能力 一个数组对象只能保存一种类型的对象,数组和其它容器的区别,效率 数组是一种效率很高的存储和随机访问对象引用序列的方式 一个简单的线性序列 大小就固定 类型 数组可可以保存基本类型,容器不行 保存基本类型的能力 一个数组对象只能保存一种类型的对象,Collection,作用: 表示一组对象 类型: 有序 无序 允许重复 禁止重复 实现 Collection List LinkedList (链表) ArrayList (顺序结构动态数组类) Vec

7、tor (向量) Stack (堆栈) Set,List接口,作用: List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。 特点: 有序 允许有相同元素 介绍 用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加

8、,删除,设定元素,还能向前或向后遍历。 实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。,List实现,ArrayList 实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。 每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensu

9、reCapacity方法来增加ArrayList的容量以提高插入效率。 和LinkedList一样,ArrayList也是非同步的(unsynchronized)。,List实现,LinkedList类 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。 注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时

10、构造一个同步的List: List list = Collections.synchronizedList(new LinkedList(.);,List实现,Vector类 Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常

11、。,List实现,Stack 类 Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,push()方法是把元素放在栈顶,pop()方法是把栈顶元素删除以后,在返回删除以后的新的栈顶元素。还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。,Set接口,作用 Set是一种不包含重复的元素的Collection(即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素),Set接口不

12、保证维护元素的次序。,Set接口,HashSet类 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。采用散列函数对元素进行排序,这是专门为快速查询而设计的 TreeSet类: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。采用红黑树的数据结构进行排序元素; LinkedHashSet类: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。 内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的,Map接口,Map提供key到

13、value的映射。一个Map中不能包含相同的key,每个key只能映射一个value Map接口提供3种集合的视图 key集合, 一组value集合, 或者一组key-value映射。,Map实现,HashMap类 HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load f

14、actor过低。,Map实现,Hashtable类 HashMap和Hashtable类似,不同之处在于Hashtable 是同步的,容器类总结,如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1