import java.util.HashMap;
import java.util.Map;
/*
* HashMap类,实现Map接口,以键值对的形式存储数据key-value
*/
public class Test04
{
public static void main(String[] args)
{
// 创建一个HashMap集合
Map map = new HashMap();
// 向集合中存储键值对数据
map.put("one", "tom");
map.put("two", "mike");
map.put("three", "alice");
//key必须唯一,如果key相同,会更新相应的值
map.put("three", "jack");
map.put("four", "alex");
//根据key取出其对应的值value
Object obj=map.get("two");
System.out.println("two:"+obj);
//根据key删除指定的键值对
System.out.println(map.remove("four"));
//判断是否存在指定的key或value
System.out.println("key为four的元素存在吗?"+map.containsKey("four"));
System.out.println("value为alice的元素存在吗?"+map.containsValue("jack"));
System.out.println("集合是否为空?"+map.isEmpty());
System.out.println("集合中元素的个数:"+map.size());
System.out.println("HashMap集合中的元素:"+map);
}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* 迭代Map集合
*/
public class Test05
{
public static void main(String[] args)
{
// 1.创建一个HashMap集合,保存学生信息
Map students = new HashMap();
// 2.创建学生对象
Student stu1 = new Student(9527, "唐伯虎", 20);
Student stu2 = new Student(3306, "唐伯龙", 22);
Student stu3 = new Student(1521, "唐伯猪", 18);
// 3.将学生添加到集合中,学号作为key,学生对象作为value
students.put(stu1.getId(), stu1);
students.put(stu2.getId(), stu2);
students.put(stu3.getId(), stu3);
// 输出学生信息
System.out.println("共有" + students.size() + "个学生!");
System.out.println("分别为:");
// 1.遍历集合中的key
Set keys = students.keySet();// 获取key的集合
System.out.println("学号\t姓名\t年龄");
System.out.println("***************遍历key方法一*******************");
for (Object key : keys)// 遍历所有的key
{
Student stu = (Student) students.get(key); // 根据key取出对应的value
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
System.out.println("***************遍历key方法二*******************");
Iterator it = keys.iterator();// 获取key集合对应的迭代器
while (it.hasNext())
{
Student stu = (Student) students.get(it.next()); // 根据key取出对应的value
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
// 2.遍历集合中的value
Collection c = students.values();// 获取value的集合
System.out.println("***************遍历value方法一*******************");
for (Object obj : c)
{
Student stu = (Student) obj;// 获取value,即学生对象
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
System.out.println("***************遍历value方法二*******************");
Iterator it2 = c.iterator();
while (it2.hasNext())
{
Student stu = (Student) it2.next();
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
// 3.直接遍历集合中的key-value整体
Set set=students.entrySet();
System.out.println("***************遍历entry(key-value)方法一*******************");
for(Object obj:set){
Map.Entry entry=(Map.Entry) obj;
int id=(Integer) entry.getKey();//通过Map.Entry的getKey()方法获取key
Student stu=(Student) entry.getValue();//通过Map.Entry的getValue()方法获取value
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
System.out.println("***************遍历entry(key-value)方法二*******************");
Iterator it3=set.iterator();
while(it3.hasNext()){
Map.Entry entry=(Map.Entry) it3.next();
int id=(Integer) entry.getKey();
Student stu=(Student) entry.getValue();
System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
+ stu.getAge());
}
}
}
/*
* 学生
*/
class Student
{
private int id;// 学号
private String name;// 姓名
private int age;// 年龄
public Student(int id, String name, int age)
{
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Set;
/*
* Hashtable类,实现Map接口,用法类似于HashMap
*/
public class Test06
{
public static void main(String[] args)
{
Hashtable ht = new Hashtable();
//向Hashtable中存入数据
ht.put(1, "李玉章");
ht.put(5, "万丽庆");
ht.put(25, "陈程");
//ht.put(null, "吴伟");//Hashtable的key和value都不允许为null
HashMap hm=new HashMap();
hm.put(null, "葛军");//HashMap的key和value都可以为空,但key必须唯一
hm.put(13, null);
System.out.println(hm);
//从Hashtable中获取数据
String name=(String) ht.get(5);
System.out.println("key:5\nvalue:"+name);
System.out.println(ht);
/*
* 遍历key的集合
*/
System.out.println("***************使用keySet()方法,通过foreach循环,遍历key的集合");
Set set=ht.keySet();
for(Object obj:set){
int id=(Integer) obj;
String n=(String) ht.get(id);
System.out.println(id+","+n);
}
/*
* 使用Enumeration迭代
*/
System.out.println("***************使用elements()方法,通过Enumeration,遍历value的集合");
Enumeration e=ht.elements();//遍历value的Enumeration实例
while(e.hasMoreElements()){//判断是否有元素
Object obj=e.nextElement();//获取当前元素,即当前的value
System.out.println(obj);
}
System.out.println("***************使用keys()方法,通过Enumeration,遍历key的集合");
Enumeration e2=ht.keys();
while(e2.hasMoreElements()){
int id=(Integer) e2.nextElement();//获取当前的key
String n=(String) ht.get(id);
System.out.println(id+","+n);
}
}
}
JAVA学习笔记(二十二)- 集合HashMap与Hashtable
原文:http://blog.csdn.net/wangzi11322/article/details/44645081