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。专为解决特殊问题而设计。
- 浏览: 1202329 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (706)
- 全部博客(10000) (0)
- java基础 (123)
- 算法及数据结构 (64)
- SSH框架整合与平台系统分析 (11)
- j2ee (46)
- Oracle (95)
- SQL Server (11)
- javaScript (73)
- Ajax (22)
- jQuery (39)
- ExtJs (4)
- jsp (13)
- Servlet (6)
- struts1 (2)
- struts2 (33)
- Ibatis (2)
- hibernate (24)
- Spring (11)
- 设计模式 (8)
- 正则表达式 (9)
- UML (0)
- XML (9)
- linux (19)
- CSS (11)
- FreeMarker (4)
- nginx 与 memcached (6)
- SEO (5)
- Web 服务器 (11)
- junit 与 selenium2 (4)
- MyEclipse 有关的问题 (24)
- 生活杂感 (37)
- 看过的书 (2)
- 技术牛人 (2)
- 需要优化的例子 (3)
- English 学习 (7)
- bug修改的解决方法 (2)
- 数据库实战经验总结 (1)
- 期待解决的问题 (20)
- 等待自己学习的东西 (15)
- 自己公司代码结构总结 (15)
- 企业经营之道 (23)
- 工具管理 (1)
- 世范水晶 (2)
最新评论
-
hustkeai:
第一个方法是不对的
求一个Map中最大的value值,同时列出键,值 -
qq591920734:
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
qq591920734:
[color=orange][/color]包女包女不女
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
timer_yin:
seagrave 写道这个算法想法不错,但太耗时,我用1、2、 ...
用1、2、2、3、4、5这六个数字,数字排序经典算法 -
hellostory:
日常生活中,我们都不按你上面的那个方法算的!!!
JAVA小函数-计算日期差
发表评论
-
char 与 byte 互转
2013-10-21 16:24 982char转byte char a='a'; byte b= ... -
全局变量 与 局部变量 赋值的问题
2013-09-18 11:48 1747全局变量: (1)在java中,类的全局变 ... -
java堆与栈 java String分配内存空间(详解)
2013-09-17 14:07 2028java堆栈 (转) jav ... -
int 与 Integer 什么情况下,必须分开用。
2013-09-17 00:23 18531、定义变量的时候。 double u= ... -
将一个交错数据合并为一个一维数组
2013-09-16 23:42 1094题目: 将一个交错数据合并为一个一维数组 输入: strJ ... -
ArrayList,LinkedList使用场景及性能说明
2013-09-14 11:06 978Java面试中关于容器类List,Set是必问题目。但在我的 ... -
ArrayList和LinkedList(转)
2013-09-14 01:27 994对于处理一列数据项, ... -
java 连接池的实现过程
2013-09-12 21:39 797java 连接池的实现过程 -
数据库 查询成绩及格的人
2013-09-11 22:53 9561、建表结构 -- 创建表create table ... -
关于接口的定义
2013-09-10 22:15 870关于接口的定义: 1、接口 Illegal modifi ... -
在JAVA中一共有八种基本数据类型。
2013-09-09 20:26 1691在JAVA中一共有八种基本数据类型。 他们分别是by ... -
字节与字符的关系
2013-09-07 14:44 13971、字节(Byte):通常将可表示常用英文字符8位二进制称为一 ... -
java访问权限是什么?
2013-09-06 12:38 8981、private修饰词,表示成员是私有的,只有自身可以访问 ... -
java 子类重写父类的方法
2013-09-05 23:24 0java 子类重写父类的方法 若想实现一个合格重写方法,而 ... -
java变量,初始化快,构造函数的执行顺序
2013-09-05 23:11 915重载就是在同一个类中方法名字一样,参数列表不一样对返 ... -
CAS实现单点登录(SSO)经典完整教程
2013-09-04 23:23 1254CAS实现单点登录(SSO)经典完整教程 ... -
查找 字符串中 重复字符最多的个数
2013-09-03 12:13 1384public static void main(String[ ... -
java synchronized详解
2013-09-03 11:01 774一直对这些不是很懂。找了一下,看一下,供我以后再看: 第一 ... -
HashMap学习
2013-09-03 10:59 9031. HashMap概述: HashMap是基于哈希 ... -
Java中对Map(HashMap,TreeMap,Hashtable等)的排序
2013-09-03 10:57 1720Map hostpowerMap = new HashMap ...
相关推荐
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
java集合类list-set-map.doc
java中set、map、list的区别与联系
Java操作Redis,实现String、List、Map的set和get,并且提供封装和Junit测试类,方便快捷的实现java对redis进行操作。
自己写的例子,Java连接 redis 测试了string,list set ,map类型,以及中文测试,都正常,资源解释:http://www.cnblogs.com/aspirant/p/6816180.html
Java集合Collection、List、Set、Map使用详解
Java集合的主要分为三种类型set集,list列表,map映射,接下来通过本文给大家详细介绍java中list、Set和Map之间的区别,需要的的朋友参考下吧
详细描述map、list、set的常用子类特性,各个场景的适用。
JAVA__MAP_+__LIST__SET和MAP的区别+_Map的三种遍历方法
Java中的Set,List,Map的区别.pdf
详细介绍了java中的list、map、set的存储方式及使用方法,涵盖了多个java大侠的见解,让读者充分了解list、map、set的区别和使用
Java集合排序及java集合类详解 (Collection, List, Set, Map)
浅谈Java中的Set、List、Map的区别.docx
Collection,List,Set和_Map用法和区别
重要知识Java中的Set,List,Map的区别.pdf
java 集合类的详细介绍 set map list 以及iterator entry 的介绍
《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)
1、List,Set,map都是继承自Collection接口,—–java.util 2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的...
Java集合类List-Set-Map的区别和联系.doc