java-Map接口(查询表)

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * Map接口
 * Map接口定义的集合又称查询表,用于存储"Key-Value"映射对。Key是Value的索引
 * Map要求Key不允许重复,是否重复取决于Key元素
 * equals方法比较的结果
 * 
 * 常用实现类;java.util.HashMap
 * HashMap:散列表,以散列算法实现的Map
 * 
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map=new HashMap<String,Integer>();
        /**
         * 向Map中存放元素的put方法
         * V put(K key,V value)
         * 将Key-Value对存入Map,如果在集合中已经包含该Key,
         * 则操作将替换该Key所对应的Value,返回值为该Key原来所对应的Value(如果没有则返回null)
         */
        map.put("语文", 89);
        map.put("数学", 56);
        map.put("化学", 54);
        map.put("体育", 89);
        map.put("语文", 98);
        System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98}
        /**
         * 尽量不要使用基本类型去接收返回值,以为返回值为null时,
         * 触发自动拆箱时会引起空指针异常
         */
        Integer num=map.put("美术", 99);
        System.out.println(num);//null
        System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98, 美术=99}
        Integer num1=map.put("美术", 99);
        System.out.println(num1);//99
        /**
         * 从Map中获取元素
         * -V get(Object key)
         * 返回参数key所对应的Value对象,如果不存在则返回null
         */
        Integer num2=map.get("体育");
        System.out.println(num2);//89
        Integer num3=map.get("大海");
        System.out.println(num3);//null
        /**
         * V remove(Object key)
         * 将给定的Key对应的键值对从map中删除,返回值为该key对应的value值
         */
        Integer num4=map.remove("美术");
        System.out.println(num4);//99
        System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98}
        /**
         * containsKey()方法
         * 判断某个Key是否在Map中存在(参考equals比较结果)
         * boolean containKey(Object key)
         * 若Map中包含给定的Key则返回true,否则返回false
         * boolean containValue(V v)
         * 若Map中包含给定的Value则返回true,否则返回false
         */
        boolean containsKey=map.containsKey("化学");
        System.out.println(containsKey);//true
        System.out.println(map.containsKey("大大"));//false
        System.out.println(map.containsValue(10));//false
        /**
         * 遍历Map
         * 遍历key:Set KeySet()该方法会将当前Map中所有的Key存入一个Set集合后返回
         * 遍历Value(不常用)
         * 遍历Key-Value
         */
        Map<String,Double> maps=new HashMap<String,Double>();
        maps.put("a", 1.2);
        maps.put("b", 15.3);
        maps.put("c", 1.6);
        maps.put("d", 1.2);
        System.out.println(maps);//{a=1.2, b=15.3, c=1.6, d=1.2}
        Set<String> keyset=maps.keySet();
        for(String key:keyset) {
            System.out.println("Key:"+key);
        }

        /**
         * 遍历每一组键值对
         * set entrySet()
         * Entry是Map的内部类,其每一个实例用于表示Map中一组键值对
         * 常用方法:getKey,getValue,这两个方法分别用于获取该组键值对中的Key与value
         * 
         * entrySet方法会将当前maps中每一组键值对以一个Entry实例的形式存入Set集合后返回
         */
        Set<Entry<String,Double>> entryset=maps.entrySet();
        for(Entry<String,Double> e:entryset) {
            String key=e.getKey();
            Double value=e.getValue();
            System.out.println(key+":"+value);
        }
        /**
         * 遍历所有的value
         * Collection values()
         * 将当前Map中所有的value存入一个集合后返回
         */
        Collection<Double> values=maps.values();
        for(Double d:values) {
            System.out.println(d);
        }
        /**
         * LinkdedHashMap类
         * 此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,
         * 该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。
         */
        Map<String,Integer> link=new LinkedHashMap<String,Integer>();
        link.put("da", 12);
        link.put("ha", 13);
        link.put("hei", 15);
        System.out.println(link);//{da=12, ha=13, hei=15}
    }
}
发布了155 篇原创文章 · 获赞 37 · 访问量 19万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章