- 浏览: 424661 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Java搜索工具——Lucene实例总结(一) -
chengang292214:
总结的不错
Web开发中的路径问题 -
liuyuanhui0301:
aka~
Java 归并排序(基于数组) -
IT人_:
不错
远程连接MySQL,防火墙阻止访问,解决办法 -
zhuchao_ko:
借鉴。
JNDI访问LDAP
1. Map基础
Map接口提供3种集合的视图:
map的key不能够重复,value可以
(1)key-value映射集合 — entrySet() 返回包含映射的Set视图。Set中的每个元素都是一个Map.Entry对象,可以使用 getKey()和getValue()方法(还有一个setValue() 方法)访问后者的键元素和值元素
(2)key集合 — keySet() 包含键的 Set 视图。删除 Set 中的元素还将删除 Map 中相应的映射(键和值)
(3)value集合,values() 是值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)
我们还必须获得一个Iterator对象,进而取得相应的key-value映射、key和value。
Iterator keyValuePairs = aMap.entrySet().iterator(); Iterator keys = aMap.keySet().iterator();//keys.remove();删除当前键值对 Iterator values = aMap.values().iterator();//values.remove();删除当前键值对
Map增删方法
clear() 从 Map 中删除所有映射
remove(Object key) 从 Map 中删除键和关联的值
put(Object key, Object value) 将指定值与指定键相关联
Map访问方法
get(Object key) 返回与指定键关联的值
containsKey(Object key) 如果 Map 包含指定键的映射,则返回true
containsValue(Object value) 如果此 Map 将一个或多个键映射到指定值,则返回 true
isEmpty() 如果 Map 不包含键-值映射,则返回 true
size() 返回 Map 中的键-值映射的数目
2. HashMap和HashTable的区别
Hashtable继承自Dictionary类, size()表示包含了多少元素;isEmpty()判断是否包含了元素;put(Object key, Object value)添加一个值;get(Object key)获得与某个键对应的值;而remove(Object Key)从列表中删除“键-值”对。还可以使用枚举技术:keys()产生对键的一个枚举(Enumeration);而elements()产生对所有值的一个枚举。这便是一个Dictionary(字典)的全部。
(1) 继承和实现区别
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
(2) 线程安全不同
HashTable的方法是同步的,HashMap是未同步,所以在多线程场合要手动同步HashMap。HashMap效率高
(3) 对null的处理不同
HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
HashTable 不允许null值,编译期不会检查,运行期会出现空指针异常。HashMap允许 null值是指可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
(4) 方法不同
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
(5)
HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
HashTable
public static void hashTableTest(){ Hashtable hash = new Hashtable(); hash.put("abc", "1"); hash.put("ddd", "1"); hash.put("asdf", "2"); // hash.put("asdfsad", null); NullPointerException System.out.println("迭代方法1:entrySet"); Set entrySet = hash.entrySet(); for(Iterator i=entrySet.iterator();i.hasNext();){ Entry entry = (Entry)i.next(); System.out.println("key:"+entry.getKey()+",value:"+entry.getValue()); } Set set = hash.keySet(); System.out.println("迭代方法2:keySet"); for(Iterator i=set.iterator();i.hasNext();){ String key = (String)i.next(); System.out.println("key:"+key+",value:"+hash.get(key)); } System.out.println("迭代方法3: values"); Collection values = hash.values(); for(Iterator i=values.iterator();i.hasNext();){ System.out.println("value:"+i.next()); } System.out.println("迭代方法4: keys"); Enumeration enumkey = hash.keys(); while (enumkey.hasMoreElements()) { String str = (String) enumkey.nextElement(); System.out.println(str + " --- " + hash.get(str)); if ("1".equals(hash.get(str))) hash.remove(str); } System.out.println("asdf:" + hash.get("asdf")); enumkey = hash.elements(); while (enumkey.hasMoreElements()) { String str = (String) enumkey.nextElement(); System.out.println(str ); } }
2. Map排序
Map排序,可以按key排序,也可以按value排序,示例代码如下:
public static void main(String[] args) { Map<String, Integer> maps = new HashMap<String, Integer>(); maps.put("boy", 8); maps.put("cat", 7); maps.put("dog", 1); maps.put("apple", 5); //排序前的输出 Iterator i = maps.entrySet().iterator(); while (i.hasNext()) { Map.Entry<String, Integer> entry1 = (Map.Entry<String, Integer>) i.next(); System.out.println(entry1.getKey() + "-------->" + entry1.getValue()); } System.out.println("排序后的输出:"); List<Map.Entry<String, Integer>> info = new ArrayList<Map.Entry<String, Integer>>(maps .entrySet()); Collections.sort(info, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> obj1, Map.Entry<String, Integer> obj2) { return obj1.getKey().compareTo(obj2.getKey());//按key排序 //return obj2.getValue() - obj1.getValue(); //按value排序 } }); for (int j = 0; j < info.size(); j++) { System.out.println(info.get(j).getKey() + "------->" + info.get(j).getValue()); } }
3. Map遍历
public static void iterationTest() { Map<String, Integer> tempMap = new HashMap<String, Integer>(); tempMap.put("a", 1); tempMap.put("b", 2); tempMap.put("c", 3); // JDK1.4中 // 遍历方法一 hashmap entrySet() 遍历 System.out.println("方法一"); Iterator it = tempMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // JDK1.5中,应用新特性For-Each循环 // 遍历方法二 System.out.println("方法二"); for (Map.Entry<String, Integer> entry : tempMap.entrySet()) { String key = entry.getKey().toString(); String value = entry.getValue().toString(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // 遍历方法三 hashmap keySet() 遍历 System.out.println("方法三"); for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// 循环输出key System.out.println("key=" + obj + " value=" + tempMap.get(obj)); } for (Iterator i = tempMap.values().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// 循环输出value } System.out.println(""); // 遍历方法四 treemap keySet()遍历 System.out.println("方法四"); for (Object o : tempMap.keySet()) { System.out.println("key=" + o + " value=" + tempMap.get(o)); } System.out.println("11111"); // java如何遍历Map <String, ArrayList> map = new HashMap <String,ArrayList>(); Map<String, ArrayList> map = new HashMap<String, ArrayList>(); Set<String> keys = map.keySet(); Iterator<String> iterator = keys.iterator(); while (iterator.hasNext()) { String key = iterator.next(); ArrayList arrayList = map.get(key); for (Object o : arrayList) { System.out.println(o + "遍历过程"); } } System.out.println("2222"); Map<String, List> mapList = new HashMap<String, List>(); for (Map.Entry entry : mapList.entrySet()) { String key = entry.getKey().toString(); List<String> values = (List) entry.getValue(); for (String value : values) { System.out.println(key + " --> " + value); } } }
发表评论
-
Test
2014-07-11 15:51 721insert into CMLGPLGP (CMLGP_L ... -
C/C++调用Java代码 创建对象、字符串操作
2011-12-01 16:08 3618back>> 1. java对象的创建的步骤 ... -
JNI(C/C++调用Java父类/子类方法)
2011-11-30 21:56 8239back>> 1. C/C++调用Java函 ... -
C/C++调用Java代码(属性和方法)
2011-11-30 10:48 9246back>> 1. JNIEnv对象 ... -
JNI(Java调用C/C++代码)
2011-11-30 10:46 8419back>> 1. 首先在Java类中声明一 ... -
JNI(Java Native Interface)
2011-11-30 10:12 12391. 基本概念 - Java是跨平台的语言, ... -
JNDI访问LDAP
2011-11-27 11:52 34391. 搭建了ldap服务器 - 下载ope ... -
JNDI
2011-11-27 11:22 21571. 基本概念 (参考 ) jndi ... -
Java 文件锁技术
2011-08-06 09:39 2189IRIP项目中,Agent每分钟都要向Director ... -
Java IO(文件操作工具类)
2011-07-13 18:30 4514去Java IO >> FileOperate实 ... -
XML解析(SAX解析)
2011-05-19 21:07 10251. SAX的基本原理及常用的接口 * Si ... -
java里抽象类和接口的区别
2011-03-05 23:31 747下面的这篇文章讲 ... -
Java 多线程(三)--正确理解ThreadLocal
2011-03-03 18:04 1368转自:http://www.iteye.com/topic/1 ... -
Callable 与 Runnable 的区别
2011-03-03 17:56 3219转自:http://blog.sina.com.cn/s/bl ... -
Java 多线程(二)
2011-03-03 16:21 1987并发 Table of Contents ... -
Java编码规范
2011-02-15 11:10 15861.Eclipse配置 (1) 导入o ... -
Java搜索工具——Lucene实例总结(一)
2010-12-22 21:42 17845参考网页:http://footman265.itey ... -
JMS在Spring框架下的应用
2010-12-07 23:51 13141上传通讯薄操作, ... -
页面自动跳转代码
2010-11-09 15:11 15791. 在body中使用onload属性 &l ... -
Java 多线程(一)
2010-07-27 18:07 904参考自:http://lavasoft.blog.51cto. ...
相关推荐
java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
超全Java集合框架讲解 - 超全Java集合框架讲解 - 集合框架总览 - Iterator Iterable ListIterator - Map 和 Collection 接口 - Map 集合体系详解 - HashMap - LinkedHashMap - TreeMap - WeakHashMap - ...
HashMap,HashTable,LinkedHashMap,TreeMap的区别
4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 ...
集合框架包含collection和map的子类。其中collection包含list、set和queue。map包括hashmap、hashtable和treemap
java集合 线程不安全的集合 HashMap的特点 HashMap的长度(容量)为什么要设计成2的幂? HashTable的特点 TreeMap ArrayList的特点 Vector的特点 LinkedList的特点 Set ConcurrentModificationException异常 线程...
java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...
java map排序,hashmap,linkedmap,treemap,hashtable
Map虽然也叫集合,但是它却不是Collection的子接口。它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。 map的实现接口有有不少,比如...
java源码整理包:list,map,ArrayList,HashMap,HashSet,Hashtable,TreeMap,TreeSet,Vector等源码包分享
1.说一下 HashMap 的实现原理? 2.HashMap在JDK1.7和JDK1.8中有哪些不同?...16.如何决定使用 HashMap 还是 TreeMap? 17.HashMap 和 ConcurrentHashMap 的区别? 18.ConcurrentHashMap 和 Hashtable 的区别?
HashMap实现了Map接口,允许放入null元素,除该类未实现同步外,其余跟Hashtable大致相同,跟TreeMap不同,该容器不保证元素顺序,根据需要该容器可能会对元素重新哈希,元素的顺序也会被重新打散,因此不同时间...
本次实验掌握了集合的概念、体系结构、分类及使用场景,了解了Set接口及主要实现类(HashSet、TreeSet),了解了解List接口及主要实现类(ArrayList、LinkedList、Vector),掌握ArrayList的使用及其与Vector的区别,...
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); ...
HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 Set 接口 AbstractSet 抽象类SortedSet 接口HashSet LinkedHashSet TreeSet List 接口 AbstractList 和 AbstractSequentialList ...
java8 源码 学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,关注微信公众号,及时得到文章推送,谢谢支持。 说明:如无特别说明,所有代码都基于JDK8 JavaSE(Java基础) Java Core 关键字 ...
21. HashMap 和 Hashtable 有什么区别? 22. 如何决定使用 HashMap 还是 TreeMap? 23. 说一下 HashMap 的实现原理? 24. 说一下 HashSet 的实现原理? 25. ArrayList 和 LinkedList 的区别是什么? 26. 如何实现...
java bitset源码Java源码分析 基础集合列表 ArrayList (done) Vector (done) LinkedList (done) Stack (done) ReferenceQueue (done) ArrayDeque (done) Set HashSet (done) TreeSet (done) LinkedHashSet (done) ...
Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别2008-03-30 13:27 这几天这个论坛还处在各个方法的设计阶段,也写了一部分,现在又遇到了这样的问题,怎么保存大量对象。。。的,查了...