JavaSE-Map集合

Map集合

Set集合和List集合都属于Collection

Map每个元素的值都包含两个对象,key-value键值对

key不能够重复,唯一的key可以对应多个value

May中不存在索引,有key,可以实现循环访问

HashMap

允许 null值和 null关键

初始化

HashMap<key,value> hashMap = new HashMap<key,value>();

常用方法

boolean containsKey(Object key)  #返回 true如果这Map包含一个指定的键映射
boolean containsValue(Object value)  #返回 true如果映射到指定的值的一个或多个键
V get(Object key)  #返回指定的键映射的值,或 null如果这个Map不包含的键映射
Set<K> keySet()  #返回一个 Set的关键视图包含在这个Map
V put(K key, V value)  #将指定的值与此映射中的指定键关联
V replace(K key, V value)  #仅当它当前映射到某一值时,替换指定的键的条目
boolean replace(K key, V oldValue, V newValue)  #仅当当前映射到指定的值时,替换指定的键的条目

遍历

Student类

package com.HashMap.util;
/*
 * @author Administrator
 * @version 1.0
 */
public class Student {
    //成员变量
    private String id;
    private String name;
    private char sex;
    //无参构造方法
    public Student(){

    }
    //有参构造方法
    public Student(String id,String name,char sex){
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }
    @Override
    public int hashCode(){
        return id.hashCode();
    }
    @Override
    public boolean equals(Object obj){
        if (this == obj){
            return true;
        }
        if (obj instanceof Student){
            Student stu = (Student) obj;
            if ((this.id == stu.id) && (this.name == stu.name) && (this.sex == stu.sex)){
                return true;
            }
        }else {
            System.out.println(obj.getClass());
        }
        return false;
    }
}

HashMapDemo类

package com.HashMap.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * @author Administrator
 * @version 1.0
 */
public class HashMapDemo {
    //主函数
    public static void main(String[] args) {
        //初始化HashMap对象
        HashMap<String,Student> hashMap = new HashMap<String, Student>();
        //初始化Student对象
        Student student1 = new Student("00000002","邓一",'男');
        Student student2 = new Student("00000001","李二",'男');
        Student student3 = new Student("00000003","张三",'男');
        //不能重复
        hashMap.put(student1.getId(),student1);
        hashMap.put(student2.getId(),student2);
        hashMap.put(student3.getId(),student3);
        hashMap.put(null,null);
        //Iterator遍历HaspMap
        //方法一:通过keyset()方法获得key的set集合
        Set<String> set = hashMap.keySet();
        Iterator<String> it1 = set.iterator();
        while (it1.hasNext()){
            String key = it1.next();
            System.out.println(key + ":" + hashMap.get(key));
        }
        //方法二:通过entrySet()方法
        Iterator it2 = hashMap.entrySet().iterator();
        while (it2.hasNext()){
            //获得entry(多态),向下转型
            Map.Entry<String,Student> entry = (Map.Entry<String, Student>) it2.next();
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        //null:null
        //00000003:com.HashMap.util.Student@ba071803
        //00000002:com.HashMap.util.Student@ba071802
        //00000001:com.HashMap.util.Student@ba071801
    }
}

Hashtable

不接受Null

为了成功的再Hashtable中存储和获取对象,用作键的对象必须实现hashCode和equals方法

HashTableDemo类

package com.HashTable.util;

import java.util.*;

/*
 * @author Administrator
 * @version 1.0
 */
public class HashTableDemo {
    //主函数
    public static void main(String[] args) {
        //初始化Hashtable对象
        Hashtable<String,Student> hashtable = new Hashtable<String, Student>();
        //初始化Student对象
        Student student1 = new Student("00000002","邓一",'男');
        Student student2 = new Student("00000001","李二",'男');
        Student student3 = new Student("00000003","张三",'男');
        //不能重复
        hashtable.put(student1.getId(),student1);
        hashtable.put(student2.getId(),student2);
        hashtable.put(student3.getId(),student3);
        //不允许null值
//        hashtable.put(null,null);
        //Hashtable特有的循环Enumeration<V> elements() 返回此散列表中值的枚举
        Enumeration<String> enumeration = hashtable.keys();
        while (enumeration.hasMoreElements()/*类比hashNext()*/){
            String key = enumeration.nextElement();
            System.out.println(key + ":" + hashtable.get(key));
        }
        //00000003:com.HashMap.util.Student@ba071803
        //00000002:com.HashMap.util.Student@ba071802
        //00000001:com.HashMap.util.Student@ba071801
    }
}

猜你喜欢

转载自blog.csdn.net/JavaDestiny/article/details/85882838