首页 > 编程语言 > 详细

JAVA学习笔记(二十二)- 集合HashMap与Hashtable

时间:2015-03-26 09:05:20      阅读:243      评论:0      收藏:0      [点我收藏+]

HashMap类

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);
    }
}

迭代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;
    }

}

Hashtable类

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!