本人学生党一枚。Java学习过程,写这个博客纯属当复习,其中有一些概念的东西会借鉴一些大神的资料。有什么错误或者不当的地方请大家指出来在评论里指点指点我,谢谢
HashMap概念:
Map是一种以键值对储存数据的容器。而HashMap则是借助了键值key的hashcode值来组织储存,使得可以非常快速和高效地根据键值key进行数据的存取
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap是线程不安全的,是异步的。
HashMap基本操作:
创建对象:
//创建一个HashMap对象
HashMap hm = new HashMap();
放入数据:
//将emp放入到hm里面去(前面是键,后面是值)
hm.put("s001", emp1);
查找数据:
//如果你要查找key是 s002
(hm.containsKey("s002")
取出数据:
//如何取出
Emp emp = (Emp)hm.get("s002");
遍历HashMap:利用Iterator(迭代器)
//遍历HashMap中所有的key和value
//Iterator迭代器
Iterator it = hm.keySet().iterator();
//hasNext返回一个boolean
while (it.hasNext())
{
//取出key然后转成字符串
String key = it.next().toString();
//通过key取出value
Emp emp = (Emp)hm.get(key);
System.out.println("名字:"+emp.getName());
System.out.println("薪水:"+emp.getSal());
}
HashMap基本实现代码:
/*
* 功能: HashMap 的基本操作
*/
package demo7;
import java.awt.event.MouseWheelEvent;
import java.util.HashMap;
import java.util.Iterator;
public class Demo7_5 {
public static void main(String[] args) {
//创建一个HashMap对象
HashMap hm = new HashMap();
Emp emp1 = new Emp("s001", "赵蕾", 3.4f);
Emp emp2 = new Emp("s002", "慧倩", 3.4f);
//将emp放入到hm里面去
hm.put("s001", emp1);
hm.put("s002",emp2);
//如果你要查找编号是 s002
if (hm.containsKey("s002")) {
System.out.println("有该员工");
//如何取出
Emp emp = (Emp)hm.get("s002");
System.out.println("名字:"+emp.getName());
}else {
System.out.println("没有该员工");
}
//遍历HashMap中所有的key和value
//Iterator迭代器
Iterator it = hm.keySet().iterator();
//hasNext返回一个boolean
while (it.hasNext())
{
//取出key然后转成字符串
String key = it.next().toString();
//通过key取出value
Emp emp = (Emp)hm.get(key);
System.out.println("名字:"+emp.getName());
System.out.println("薪水:"+emp.getSal());
}
}
}
HashTable概念:
HashTable与HashMap非常相似。HashTable继承Dictionary类,实现Map接口。其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是”key-value键值对”接口。
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的。是线程同步的。
HashTable基本操作:
创建:
Hashtable ht = new Hashtable();
其他基本上与HashMap一模一样。
细节请看官方文档。
HashTable基本实现代码:
只是改了一下创建的对象。
/*
* 功能: HashTable 基本用法,在用法上HashMap基本一样
*
*/
package demo7;
import java.util.Hashtable;
import java.util.Iterator;
public class Demo7_6 {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
Emp emp1 = new Emp("s001", "赵蕾", 3.4f);
Emp emp2 = new Emp("s002", "慧倩", 3.4f);
//将emp放入到hm里面去
ht.put("s001", emp1);
ht.put("s002",emp2);
//如果你要查找编号是 s002
if (ht.containsKey("s002")) {
System.out.println("有该员工");
//如何取出
Emp emp = (Emp)ht.get("s002");
System.out.println("名字:"+emp.getName());
}else {
System.out.println("没有该员工");
}
//遍历HashMap中所有的key和value
//Iterator迭代器
Iterator it = ht.keySet().iterator();
//hasNext返回一个boolean
while (it.hasNext())
{
//取出key
String key = it.next().toString();
//通过key取出value
Emp emp = (Emp)ht.get(key);
System.out.println("名字:"+emp.getName());
System.out.println("薪水:"+emp.getSal());
}
}
}
HashMap与HashTable的区别:
顺便说说ArrayList与Vector区别
顺便附上上篇文章
ArrayList详解 http://blog.csdn.net/sinat_34394641/article/details/72967744