- 浏览: 224461 次
- 性别:
- 来自: 广东
文章分类
最新评论
-
wangmuchang:
解压需要密码
CAS单点登录之测试应用 -
ayang722:
首先就要在运行报表birt的IEngineTask中加入, J ...
birt配置动态数据源 -
lihong11:
very good!
js常用方法 -
qtlkw:
你共享出来为什么要密码?要密码为何要共享出来?汗
CAS单点登录之测试应用 -
lishouxinghome:
请问如何获得用户的Id呢,往指点
使用 CAS 在 Tomcat 中实现单点登录
List有序key和value都能重复
Set 无序(除treeSet) key和value都不能重复
Map无序(除treeMap) key 必须唯一 value 可以重复
有序否
允许元素重复否
Collection
否
是
List
是
是
Set
AbstractSet
否
否
HashSet
TreeSet
是(用二叉树排序)
Map
AbstractMap
否
使用key-value来映射和存储数据,Key必须惟一,value可以重复
HashMap
TreeMap
是(用二叉树排序)
set --其中的值不允许重复,无序的数据结构
list --其中的值允许重复,因为其为有序的数据结构
map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)
List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.
List的功能方法
实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。
List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。
ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。
LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替。)还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
Set的功能方法
Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)
Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。
TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
Map的功能方法
方法put(Object key, Object value)添加一个“值”(想要得东西)和与“值”相关联的“键”(key)(使用它来查找)。方法get(Object key)返回与给定“键”相关联的“值”。可以用containsKey()和containsValue()测试Map中是否包含某个“键”或“值”。标准的Java类库中包含了几种不同的Map:HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap。它们都有同样的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。
执行效率是Map的一个大问题。看看get()要做哪些事,就会明白为什么在ArrayList中搜索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称为“散列码”(hash code),来取代对键的缓慢搜索。“散列码”是“相对唯一”用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。所有Java对象都能产生散列码,因为hashCode()是定义在基类Object中的方法。
HashMap就是使用对象的hashCode()进行快速查询的。此方法能够显著提高性能。
Map : 维护“键值对”的关联性,使你可以通过“键”查找“值”
HashMap : Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。
LinkedHashMap : 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。
TreeMap : 基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在于,你得到的结果是经过排序的。TreeMap是唯一的带有 subMap()方法的Map,它可以返回一个子树。
WeakHashMao : 弱键(weak key)Map,Map中使用的对象也被允许释放: 这是为解决特殊问题设计的。如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收。
IdentifyHashMap : 使用==代替equals()对“键”作比较的hash map。专为解决特殊问题而设计
发表评论
-
ssh框架加入atomikos分布式事务管理
2015-01-06 18:48 1315一、概念 分布式事务分布式事务是指事务 ... -
Spring 动态切换数据源
2014-05-09 14:30 3595一、开篇 这里整合分别采用了Hibernate和MyB ... -
Spring切入点表达式常用写法
2014-05-09 14:25 781自从使用AspectJ风格切面配置,使得Spring的切面配 ... -
Spring中线程池的应用
2014-03-24 11:03 861多线程并发处理起来通常比较麻烦,如果你使用spring容器来 ... -
Spring线程池开发实战
2014-03-24 11:02 721本文提供了三个Spring多线程开发的例子,由浅入深,由于例 ... -
JSch - Java实现的SFTP(文件上传详解篇)
2013-11-21 09:36 853JSch是Java Secure Channel的缩写。J ... -
JAVA线程池ThreadPoolExecutor
2013-07-17 14:45 873java.util.concurrent.ThreadPoo ... -
log4j.properties 使用说明
2013-05-29 10:54 782一、Log4j简介Log4j有三个主要的组件:Logger ... -
eclipse安装反编译插件(附jad下载)
2012-12-12 10:45 784一、eclipse反编译插件Jadclipse jadclip ... -
web.xml 配置404和500错误的自定义页面
2012-12-07 11:47 785web.xml <error-page>< ... -
java内存溢出
2012-06-28 18:57 838一、常见的Java内存溢出 ... -
Java 自定义Annotation(元数据、注解)
2011-08-05 11:50 1832Annotation在java的世界正铺天盖地展开,有空写这一 ... -
LOG4J properties 配置文件
2011-06-29 16:31 1134一、参数意义说明1、输出级别的种类 ERROR、 ... -
servlet输出一个文件
2010-11-10 18:33 1137String fileName= file.getName() ... -
关于RSS、RDF、ATOM和Feed
2010-11-02 09:48 1186RSS被不同的技术团体做不同的解释,分别有 Rich Site ... -
正确理解Traceback的含义
2010-11-02 09:44 973Traceback是Blog的一个重要 ... -
关于Serializable的serialVersionUID
2010-10-26 09:10 1721众所周知,当某class实现了Serializable接口 ... -
获得CLASSPATH之外路径的方法
2010-10-14 10:37 929URL base = this.getClass().getR ... -
操作properties文件
2010-10-14 10:30 778发个例子大家自己看哈.package control; im ... -
Struts 2.0的codebehinde插件应用简述
2010-09-26 11:29 1035codebehind plugin是一个可以简化struts2 ...
相关推荐
NULL 博文链接:https://javazeke.iteye.com/blog/487275
set,list,map区别与联系,很详细的介绍了区别和联系
list map set联系与区别 list map set联系与区别 list map set联系与区别
List,set,Map 的用法和区别 List,set,Map 的用法和区别
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
Collection – 对象之间没有指定的顺序,允许重复元素。 Set – 对象之间没有指定的顺序,不允许重复元素 List– 对象之间有指定的顺序,允许重复元素,并引入位置...Map 接口既不继承 Set 也不继承 Collection。
java中list、set和map 的区别
java有关集合方面的总结 一目了然 绝对经典
java集合类list-set-map.doc
Set keys=map.keySet(); Iterator<Integer> stringIter=keys.iterator(); while(stringIter.hasNext()){ int key=stringIter.next(); String value=(String) map.get(key);//根据键key得到value的值 System....
Java集合排序及java集合类详解 (Collection, List, Set, Map)
详细描述map、list、set的常用子类特性,各个场景的适用。
java中set、map、list的区别与联系
Collection,List,Set和_Map用法和区别
自己写的例子,Java连接 redis 测试了string,list set ,map类型,以及中文测试,都正常,资源解释:http://www.cnblogs.com/aspirant/p/6816180.html
Collection集合下,有List,Set这些接口,这些接口有哪些区别,什么情况下可以使用呢。Map集合该如何使用呢,如何遍历呢?
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map, Object>>转化为...
Set,List,Map的区别
Java操作Redis,实现String、List、Map的set和get,并且提供封装和Junit测试类,方便快捷的实现java对redis进行操作。
前端框架Dart的集合类型List Set Map详解 以及循环语句 forEach map where any every详解,包括PPT和源码