- 浏览: 184496 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
u010244357:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
Abird2Simba:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
javer 写道代码看着有点乱啊,怎么搞的 sorry,原来是 ...
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
代码看着有点乱啊,怎么搞的
如何在springMVC 中对REST服务使用mockmvc 做测试 -
u011643314:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试
上次主要看了Map接口,以及Map的选择地址:
。http://jiuyuehe.iteye.com/blog/1480386
这次看的是Set接口。还有一个总结,到这里java常用的集合基本就这些了。总结下,分析分析性能。
Set 跟List 最明显的区别就是 Set 不允许元素重复,而List 可以。
Set中主要是HashSet 跟TreeSet
HashSet
api 中对它如下解释:
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
从源码中也可以看的出来
他就是用了一个Map 把key弄能了一个new Object() hash 到他实际的地址中,原来就是HashMap嘛。那具体还是回到了Map中 。点击看HashMap
-----------------------------------分割线------------------------------------------------
TreeSet
这个HashSet 就是由HashMap 实现,TreeSet 是不是TreeMap 呢。
还真是-。那继续点击看TreeMap
========================================大分割线=======================================================
点击看List
点击看Map
这里将java集合包里面常用的集合以及他的实现都过了一下,这些集合各有各的特点,各有各的缺点。那么什么时候选什么集合,这里总结下:
性能测试: 单线程下,测试集合大小分别为100,1000,10000.情况下的add remove get 测试10次取平均.
以下数据来自《分布式java应用》
A=ArrayList L= LinkedList HS= HashSet HM = HashMap TS = TreeSet V =Vector S =Stack TM = TreeMap
元素100时候(单位ns)
集合 增加 查找 删除
A 3756 2873 2444
L 3251 2829 2330
V 2402 2846 2704
S 2180 2572 2277
HS 2930 1559 1720
TS 5662 1846 4413
HM 3004 1579 1726
TM 5410 1840 4123
元素1000时候
集合 增加 查找 删除
A 4156 8873 9444
L 3251 12829 12330
V 2802 10846 9704
S 1880 10572 9277
HS 2130 1559 2720
TS 3062 1846 4413
HM 1995 1579 1726
TM 3410 1840 4123
元素10000时候
集合 增加 查找 删除
A 8156 88873 99444
L 3251 152829 152330
V 8802 95846 95704
S 1880 96572 99277
HS 2130 1559 2720
TS 3062 1846 4413
HM 1995 1579 1726
TM 3410 1840 4123
随着元素的增加 add 所以集合基本变动不大 List还是有所下降。 所有List 的删除,查找 性能 大幅度下降。 Set Map 基本不受元素的数量影响。
总结: 对于查找和删除较为频繁,元素量较多的情况(超过10000)Set /Map 才是更好的选择
。http://jiuyuehe.iteye.com/blog/1480386
这次看的是Set接口。还有一个总结,到这里java常用的集合基本就这些了。总结下,分析分析性能。
Set 跟List 最明显的区别就是 Set 不允许元素重复,而List 可以。
Set中主要是HashSet 跟TreeSet
HashSet
api 中对它如下解释:
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
从源码中也可以看的出来
private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and load factor (0.75). */ public HashSet() { map = new HashMap<E,Object>(); }
他就是用了一个Map 把key弄能了一个new Object() hash 到他实际的地址中,原来就是HashMap嘛。那具体还是回到了Map中 。点击看HashMap
-----------------------------------分割线------------------------------------------------
TreeSet
这个HashSet 就是由HashMap 实现,TreeSet 是不是TreeMap 呢。
private static final Object PRESENT = new Object(); /** * Constructs a set backed by the specified navigable map. */ TreeSet(NavigableMap<E,Object> m) { this.m = m; } /** * Constructs a new, empty tree set, sorted according to the * natural ordering of its elements. All elements inserted into * the set must implement the {@link Comparable} interface. * Furthermore, all such elements must be <i>mutually * comparable</i>: {@code e1.compareTo(e2)} must not throw a * {@code ClassCastException} for any elements {@code e1} and * {@code e2} in the set. If the user attempts to add an element * to the set that violates this constraint (for example, the user * attempts to add a string element to a set whose elements are * integers), the {@code add} call will throw a * {@code ClassCastException}. */ public TreeSet() { this(new TreeMap<E,Object>()); }
还真是-。那继续点击看TreeMap
========================================大分割线=======================================================
点击看List
点击看Map
这里将java集合包里面常用的集合以及他的实现都过了一下,这些集合各有各的特点,各有各的缺点。那么什么时候选什么集合,这里总结下:
性能测试: 单线程下,测试集合大小分别为100,1000,10000.情况下的add remove get 测试10次取平均.
以下数据来自《分布式java应用》
A=ArrayList L= LinkedList HS= HashSet HM = HashMap TS = TreeSet V =Vector S =Stack TM = TreeMap
元素100时候(单位ns)
集合 增加 查找 删除
A 3756 2873 2444
L 3251 2829 2330
V 2402 2846 2704
S 2180 2572 2277
HS 2930 1559 1720
TS 5662 1846 4413
HM 3004 1579 1726
TM 5410 1840 4123
元素1000时候
集合 增加 查找 删除
A 4156 8873 9444
L 3251 12829 12330
V 2802 10846 9704
S 1880 10572 9277
HS 2130 1559 2720
TS 3062 1846 4413
HM 1995 1579 1726
TM 3410 1840 4123
元素10000时候
集合 增加 查找 删除
A 8156 88873 99444
L 3251 152829 152330
V 8802 95846 95704
S 1880 96572 99277
HS 2130 1559 2720
TS 3062 1846 4413
HM 1995 1579 1726
TM 3410 1840 4123
随着元素的增加 add 所以集合基本变动不大 List还是有所下降。 所有List 的删除,查找 性能 大幅度下降。 Set Map 基本不受元素的数量影响。
总结: 对于查找和删除较为频繁,元素量较多的情况(超过10000)Set /Map 才是更好的选择
发表评论
-
使用 cxf axis1.x axis2 开发WebService
2014-02-26 14:50 1361cxf======================== ... -
基于red5 dsj 的java 处理视频流和一些疑问
2013-06-19 16:17 5671最近夭折了一个项目,由于我预研失败,同时我将被惩罚,被外派去 ... -
5分钟 熟练使用spring Aop
2013-06-09 09:56 4848声明:所有的5分钟系列博客都停留在使用的基础上,具体原理, ... -
5分钟 玩转google Gson
2013-06-05 17:18 11042google gson 是一个非常轻量的java 对象与j ... -
如何在springMVC 中对REST服务使用mockmvc 做测试
2013-06-05 09:06 46871spring 集成测试中 对mock 的集成实在是太棒了! ... -
边读边写【7】 ----java 多线程实战【Thread /Executors】
2012-04-20 17:04 1814前面2个月一直忙碌,但是还是不忘在iteye 上发发帖子,写写 ... -
struts2 上传下载模板
2012-04-20 09:38 2799第一 struts2 更新比较慢。核心的xwork 基本不变。 ... -
struts2 上传下载模板
2012-04-18 22:21 0struts2下载文件时出错提示:java.lang.Clas ... -
java乱码补充 : 移植乱码 问题
2012-04-18 12:00 1640上一篇: jquery ajax struts2 数据库等中 ... -
jquery ajax struts2 数据库等中文乱码问题解决大全
2012-04-18 09:31 4869ok 乱码了。 乱码第一件事,静下心来,思考一下这乱码出处的 ... -
java 内存的管理 转载▼
2012-04-17 16:39 1519java 内存的管理 转载▼ 内存的管理(1) 使用Ja ... -
边读边写【6】 ----序列化和反序列化
2012-04-16 15:26 0边读边写【6】 ----序列化和反序列化 -
边读边写【5】 ----java 并发包
2012-04-09 15:09 0java 并发包里面的几个常用的东西 ConCurrentH ... -
边读边写【2】 ----java 集合包之深入Map
2012-04-09 11:49 0Collection 中还有一个Set 但是常用的Set 都是 ... -
边读边写【1】 ----java 集合包之深入List
2012-04-09 11:14 2607一、java 集合包最常用 ... -
hadoop的1TB排序
2012-04-09 09:22 1458hadoop的1TB排序 作者:nos ... -
java 调用lame.exe 将 wav 进行MP3压缩的一些问题
2012-03-05 10:24 5768首先下载附件 lame.exe copy到d 盘,因为代码默认 ... -
使用DES 加密方式对文件进行加密!!!
2012-01-14 17:07 8063DES加密由于在java中非常 ... -
java 大小端存储模式 转化
2012-01-14 16:52 14579所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据 ... -
myeclipse import sun.misc.BASE64Encoder与sun.misc.BASE64Decoder导入错误
2012-01-09 19:05 2232原因你的jre是myeclipse自带的,不是你安装jdk时候 ...
相关推荐
了解各个集合类的特点和适用场景,以及它们背后的实现原理,将有助于编写出更高效、更健壮的代码。在实际编程中,我们需要根据具体需求选择合适的集合类,并合理利用工具类提供的功能,以达到最佳的性能和可维护性。
在`java集合.png`和`java集合.xmind`文件中,你可以找到更为直观的思维导图,它将帮助你清晰地理解各个接口之间的关系以及它们的主要特性。通过这样的学习方式,不仅可以加深对Java集合的理解,还能提高问题解决的...
根据提供的文件信息,“algorithm-essentials-java”似乎是一份关于Java编程语言中算法实现的文档。下面将基于文档中提到的各个部分来详细介绍其中涉及的关键知识点。 ### 引言 在计算机科学领域,算法是解决问题...
这个jar包集合包含了几个关键组件,对于理解EasyPR-Java的工作原理及其在实际项目中的应用至关重要。 首先,`javacpp-0.11.jar`是一个Java到C++接口绑定库,它允许Java开发者直接调用C++的库,无需编写额外的JNI...
对于Java集合框架,思维导图可能包括各个集合类的层次结构、它们的主要方法、性能特点、操作示例等,以及不同版本之间的改进点。 这份压缩包中的思维导图可以作为学习和复习Java集合框架的辅助材料,帮助开发者系统...
4. **集合框架**:全面解析了Java集合框架,包括List、Set、Map接口及其主要实现类如ArrayList、LinkedList、HashSet、HashMap等的使用,以及高级特性的理解,如泛型、迭代器和并发集合。 5. **多线程编程**:讲解...
Java集合框架是Java编程语言中的核心组件之一,它为数据存储和管理提供了丰富的类和接口。这个培训资料将深入探讨Java集合框架的各个方面,帮助开发者更有效地利用这些工具。 首先,我们要了解Java集合框架的基本...
5. **源码分析**:深入理解Java集合框架的源码,有助于优化代码性能。例如,了解HashMap的扩容机制、LinkedList的节点操作、ArrayList的动态数组管理等,能够帮助开发者在设计和实现自己的数据结构时避免常见陷阱。 ...
在Java集合框架方面,你会接触ArrayList、LinkedList、HashMap等数据结构,并学习如何根据需求选择合适的容器。IO流允许程序读写文件和网络数据,而线程则使你能够实现并发操作,提高程序效率。 除此之外,你还将...
- 性能分析:使用Java内置的性能监控工具或其他第三方工具,分析并优化算法性能。 综上所述,"8-puzzle-(java).rar_Java 8" 文件所代表的项目涵盖了Java编程基础、数据结构、算法设计、用户交互以及软件工程的最佳...
本篇文章将详细探讨Java集合框架的各个方面,包括其核心概念、主要接口、实现原理以及一些重要的应用场景。 ### 集合框架概述 #### 容器简介 在Java中,容器是用来存储对象的工具,它们提供了添加、删除和查找...
- 集合操作:提供对Java集合框架的增强,如便利的列表、映射操作,或者集合的排序、过滤等。 2. **文档(doc)** - `doc`目录通常存放项目的文档资料,这可能包括API参考文档、用户手册、设计文档等。 - API参考...
综上所述,本文深入探讨了 Java API 的各个方面,涵盖了从基础的 Java SE 到高级的 Web 开发和技术扩展等内容。这些知识点不仅对于初学者非常重要,对于想要进一步提升技能的开发者来说也是非常有价值的参考资料。
例如,`java算法大全源码包.zip`可能包含了各种经典的算法实现,如排序、搜索、图论等,这对于学习和优化代码性能非常有用。这些源码包可以让开发者深入理解算法的实现细节,并且可以直接在自己的项目中使用。 `...
在文档中还提到了Collection、List、JDK等标签,它们代表了Java集合框架中的各个接口和实现类。Collection是所有单列集合的顶级接口,List是继承自Collection接口的有序集合,而JDK是Java Development Kit的缩写,指...
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...
2. **Guava**: Google提供的Guava库提供了许多核心Java集合的增强,包括新的集合类型、并发工具、字符串处理、I/O操作等,是现代Java开发中的重要组件。 3. **Jackson/JSON-P/JSON-B**: Jackson是流行的JSON解析库...
6. **集合框架**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类。理解它们的特点和使用场景,是高效编程的关键。 7. **输入/输出流**:Java的I/O流用于处理数据...
标题中的“protobuf各个版本集合(2.4,2.5.3.3)-window-运行环境包”指的是一个包含不同版本Protocol Buffers(protobuf)的压缩包,适用于Windows操作系统。Protocol Buffers是Google开发的一种数据序列化协议,常...
通过这些资料,你将能够深入了解Java集合框架的各个方面,包括其内部工作原理、使用场景和最佳实践。对于想要提升Java技术水平,特别是想在实际项目中优化数据结构和算法的开发者来说,这些都是必不可少的知识点。