- 浏览: 446997 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wjs876046992:
后来我下载了Eclipse Indigo版本,同样操作却成功了 ...
myeclipse2014中安装spket-1.6.23 -
wjs876046992:
我的是myEclipse2014,将那两个文件夹拷贝到drop ...
myeclipse2014中安装spket-1.6.23 -
lucky8060:
应该不是每次请求都产生一个action吧?应该是每个sessi ...
Struts2 action的单例与多例
package com.beijing.pattern.BridgePattern.Junits; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.junit.Test; public class BirdgeTest { @Test public void testList(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("2"); list.add("3"); for(String str : list){ System.out.println("Str="+str); } for(int i =0;i<list.size();i++){ String str = list.get(i); System.out.println("Str="+str); } } @Test public void testSet(){ Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("b"); set.add("c"); for(String str : set){ System.out.println("Str="+str); } Iterator it = set.iterator(); while(it.hasNext()){ String str = (String) it.next(); System.out.println("Str="+str); } } }
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, Objectvalue)添加一个“值”(想要得东西)和与“值”相关联的“键”(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。专为解决特殊问题而设计
发表评论
-
linux安装jdk
2014-12-18 13:33 829注:JAVA_HOME=/usr/java/jdk1 ... -
linux启动jar程序-后台执行方法
2014-06-11 11:52 2025例如有我自己写了一个jar程序可以像下面这样执行: ... -
java程序以及打成jar加载log4j.properties的方法
2014-06-10 11:34 1785这个方法可以防止jar运行时找不到配置文件 1、创建 ... -
equals和==以及hashcode的区别
2014-05-10 12:35 7921、== 比较两个对象的地址,地址相同返回true ... -
使用class创建对象工程
2014-04-29 11:38 832通过class类创建类实例(泛型) 代码: packag ... -
java类加载的过程
2014-04-29 11:35 781一个java文件从被加载 ... -
java获得class对象的3中方法
2014-04-29 10:33 777Class类(在java.lang包中 ... -
java动态加载jar为什么使用Thread.getContextClassLoader()
2014-04-28 16:56 2085这个问题经常出现在编写框架代码 , 需要动态加载很多类和资 ... -
jvm和类
2014-04-28 11:45 715当执行java程序时,jvm会为该程序启动 ... -
java接口的意义
2013-07-19 15:08 8001、(举个例子)假如有一个Service类,一个Da ... -
java各种集合的性能对比
2013-07-16 16:32 775注:通常情况下ArrayList性能都要优于linked ... -
collection集合继承
2013-07-04 09:16 803f -
基本类型变量和引用型类型变量
2013-06-18 17:03 9451、所有局部变量都放在栈内存中保存,不管其是基本类型的变量 ... -
key证书管理
2013-04-09 11:06 16921.根证书:就是服务器端密钥库生成的证书。 根证书 ... -
list列表分页
2013-03-31 18:20 789/** * 从list中获取分页后的list。 * ... -
static变量和方法的生命周期
2013-03-06 16:45 33851.static变量对每个类来说都只有一份存储空间,而非s ... -
session原理详解
2012-12-06 16:35 12832.验证码:createcode代码如下: packag ... -
各进制转换bit(位)bytes(字节)M、G、TB、PB
2012-12-06 10:08 380241Byte = 8 Bit 1KB = 1,0 ... -
字符串的split方法
2012-11-26 22:03 10511.一个简单实例 package string; ... -
多线程同步问题
2012-11-26 15:32 8371.Resource.java package ...
相关推荐
List,set,Map 的用法和区别 List,set,Map 的用法和区别
java中list、set和map 的区别
list map set联系与区别 list map set联系与区别 list map set联系与区别
set,list,map区别与联系,很详细的介绍了区别和联系
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
java中set、map、list的区别与联系
java集合类list-set-map.doc
Collection – 对象之间没有指定的顺序,允许重复元素。 Set – 对象之间没有指定的顺序,不允许重复元素 List– 对象之间有指定的顺序,允许重复元素,并引入位置...Map 接口既不继承 Set 也不继承 Collection。
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....
测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar
Java集合Collection、List、Set、Map使用详解
详细描述map、list、set的常用子类特性,各个场景的适用。
Collection,List,Set和_Map用法和区别
java有关集合方面的总结 一目了然 绝对经典
1、List,Set,map都是继承自Collection接口,—–java.util 2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的...
Java集合排序及java集合类详解 (Collection, List, Set, Map)
本人用半天的时间总结了一下set、map、list以及collection的区别,其中也包括增强for循环的经典实用。
Java操作Redis,实现String、List、Map的set和get,并且提供封装和Junit测试类,方便快捷的实现java对redis进行操作。
JAVA__MAP_+__LIST__SET和MAP的区别+_Map的三种遍历方法