Java集合详解二
前一篇我们已经讲过了Collectin是存放单值的最大接口,
可以看到Map接口和其主要之类的关系图如下:

快速访问 HashMap HashTable TreeMap Map输出
那Map就是存放一对值的最大接口。此类的定义如下:
·public interface Map<K,V>
·K:此映射所维护的键的类型
·V:映射值的类型
Map<K,V>接口中提供的主要方法:
| No. | 方法 | 类型 | 说明 |
| 1 | public boolean containsKey(Object key) | 普通 | 判断是否含有指定键的元素 |
| 2 | public boolean containsValue(Object value) | 普通 | 判断是否含有指定值的元素 |
| 3 | public Set<Map.Entry<K,V>> entrySet() | 普通 | 返回此映射中包含的映射关系的集合 |
| 4 | public boolean equals(Object o) | 普通 | 判断是否和自指定元素相等 |
| 5 | public V get(Object key) | 普通 | 根据键值取得指定的值 |
| 6 | public Set<K> keySet() | 普通 | 取得全部键 |
| 7 | public V put(K key,V value) | 普通 | 向集合中加入指定键值 |
| 8 | public void putAll(Map<? extends K,? extends V> m) | 普通 | 向集合中加入指定的一组键值 |
| 9 | public V remove(Object key) | 普通 | 根据键删除指定键值 |
| 10 | public int size() | 普通 | 取得集合大小 |
| 11 | public Collection<V> values() | 普通 | 取得全部值 |
HashMap<K,V>
此类的定义如下:
public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable
此类里允许null的键和值,是非同步的,除此之外和HashTable基本上是相同的。并且是无序的。
实例:
package com.fuwh.map; import java.util.HashMap;
import java.util.Map; public class HashMapTest { public static void main(String[] args) { Map<String,String> hashMap=new HashMap<String,String>();
hashMap.put("1", "张三");
hashMap.put("1", "李四");
hashMap.put("3", "李四");
hashMap.put("2", "王武");
hashMap.put("4", "赵六"); System.out.println(hashMap);
}
}

HashTable<K,V>
这个类和Vector是同一时代的。
基本上使用也差不多。
实例:
package com.fuwh.map; import java.util.Hashtable;
import java.util.Map; public class HashTableTest { public static void main(String[] args) { Map<String,String> hashTable=new Hashtable<String,String>();
hashTable.put("1", "张三");
hashTable.put("1", "李四");
hashTable.put("3", "李四");
hashTable.put("2", "王武");
hashTable.put("4", "赵六"); System.out.println(hashTable);
}
}

TreeMap
该类是基于红黑树的原理对其按照key的自然顺序排序。
实例:
package com.fuwh.map; import java.util.Map;
import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String,String> treeMap=new TreeMap<String,String>();
treeMap.put("1", "张三");
treeMap.put("1", "李四");
treeMap.put("3", "李四");
treeMap.put("2", "王武");
treeMap.put("4", "赵六"); System.out.println(treeMap);
}
}

Map的输出
虽然说集合都应该使用Iterator来输出。但是Map不能直接使用Iterator来输出。因为没有提供iterator()方法。
查看Map接口,可以发现,在此接口中有一个嵌套类,定义如下:
public static interface Map.Entry<K,V>
其实在Map中存放的虽然是键值对,实际上存放的是一个个的Map.Entry对象。

那么,就使用Map.Entry来对Map进行输出。
实例:
package com.fuwh.map; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; public class HashMapEntry { public static void main(String[] args) { Map<String,String> hashMap=new HashMap<String,String>();
hashMap.put("1", "张三");
hashMap.put("1", "李四");
hashMap.put("3", "李四");
hashMap.put("2", "王武");
hashMap.put("4", "赵六");
Set<Entry<String,String>> entrySet =hashMap.entrySet();
Iterator<Entry<String,String>> it=entrySet.iterator();
while(it.hasNext()){
Entry<String, String> entry=it.next();
System.out.println(entry.getKey()+"-->"+entry.getValue());
}
}
}

使用foreach输出:
package com.fuwh.map; import java.util.HashMap;
import java.util.Map; public class HashMapForeach { public static void main(String[] args) { Map<String,String> hashMap=new HashMap<String,String>();
hashMap.put("1", "张三");
hashMap.put("1", "李四");
hashMap.put("3", "李四");
hashMap.put("2", "王武");
hashMap.put("4", "赵六");
for(Map.Entry<String, String> entry:hashMap.entrySet()){
System.out.println(entry.getKey()+"-->"+entry.getValue());
} }
}

另一种输出方式:
package com.fuwh.map; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; public class HashMapOut { public static void main(String[] args) { Map<String,String> hashMap=new HashMap<String,String>();
hashMap.put("1", "张三");
hashMap.put("1", "李四");
hashMap.put("3", "李四");
hashMap.put("2", "王武");
hashMap.put("4", "赵六");
Set<String> keySet1=hashMap.keySet();
Iterator<String> it=keySet1.iterator();
while(it.hasNext()){
String key=it.next();
System.out.println(key+"-->"+hashMap.get(key));
}
}
}

Java集合详解二的更多相关文章
- Java集合详解3:Iterator,fail-fast机制与比较器
Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...
- Java集合详解6:这次,从头到尾带你解读Java中的红黑树
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解8:Java的集合类细节精讲
Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...
- Java集合详解6:TreeMap和红黑树
Java集合详解6:TreeMap和红黑树 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增.删.改.查,从存储 ...
- Java集合详解8:Java集合类细节精讲,细节决定成败
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解2:一文读懂Queue和LinkedList
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
随机推荐
- 【Alpha版本】冲刺阶段 - Day4 - 加速
今日进展 袁逸灏:实现音乐的播放.(5h) 启动类,游戏画面类(修改类) 刘伟康:继续借鉴其他 alpha 冲刺博客,了解了Android方面的部分内容,便于更好地推进进度.(2h) 刘先润:更新图画 ...
- HTML5的新的结构元素介绍
HTML5的新的结构元素介绍 一.HTML5与HTML4的区别 1. 取消了一些过时的HTML4的标签 其中包括纯粹显示效果的标记,如<font>和<center>,它们已经被 ...
- iOS开发之Objective-C与JavaScript的交互
UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS ...
- tornado web高级开发项目
抽屉官网:http://dig.chouti.com/ 一.配置(settings) settings = { 'template_path': 'views', #模板文件路径 'static_pa ...
- Digilent Xilinx USB Jtag cable
Digilent Xilinx USB Jtag cable 安装环境 操作系统:fedora 20 64bit 源链接:https://wiki.gentoo.org/wiki/Xilinx_USB ...
- 常用的 html 标签及注意事项
<a> 标签 用法:用于定义超链接 清除浏览器默认样式: a { text-decoration: none;/* 去除下划线 */ color: #333;/* 改变链接颜色 */ } ...
- [知识梳理]课本3&9.1
函数:关键词:参数.返回值.函数返回类型.函数体. 函数按照返回类型,可以分为有参函数和无参函数. 函数根据是否有返回值,可以分为返回值函数和非返回值函数. 函数的定义:函数的定义可以放在任意 ...
- eclipse maven项目目录
今天遇见一个错误,关于eclipse项目的路径问题,web-inf的路径,上图和下图出现了两种web-INF,src的web-INFf和webContent的web-INF,src里面的文件需要编译以 ...
- Java看书学习笔记
1.POM:maven ,项目管理工具存放Jar包的文件2.mybatis-generator-core-1.3.2 生成文件 生成语句: java -jar mybatis-generator-co ...
- HttpWebRequest,HttpWebResponse C# 代码调用webservice,参数为xml
先上调用代码 public static string PostMoths(string url, string Json) { System.Net.HttpWebRequest request; ...