JavaSE——集合之Map接口

一、Map接口简介

Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value。

Map接口中的常用方法:

  1. void put(Object key, Object value) 将指定的值与此映射中的指定键关联
  2. Object get(Object key) 返回指定键所映射的值
  3. void clear() 删除所有的键值对元素
  4. V remove(Object key) 根据键删除对应的值,返回被删除的值
  5. int size() 返回集合中键值对的个数
  6. boolean containsKey(Object key) 判断该映射是否包含指定键的映射关系
  7. boolean containsValue(Object value) 判断该映射是否将一个或多个键映射到指定值
  8. Set keySet() 返回此映射中包含的键的Set视图
  9. Collection<V> values() 返回此映射中包含的值得Collection视图
  10. Set<Map.Entry<K, V>>entrySet() 返回此映射中包含的映射关系的Set视图

二、HashMap集合

HashMap集合是Map接口的一个实现类,用于存储键值映射关系,但HashMap集合没有重复的键且键值无序,若为同一个键重复赋值,那么后面的赋值会覆盖前面的赋值。

创建Map对象:HashMap map = new HashMap();

存储键和值:map.put("key", "value");

根据键获取值:map.get("key");

返回集合大小:map.size();

判断是否包含传入的键:map.containsKey("key");

判断是否包含传入的值:map.containsValue("value");

根据键删除值:map.remove("key");

获取每个键所对应的值:map.get(key);

如果想让集合中元素传入和传出顺序一致的话,可以使用LinkedHashMap类,它是HashMap的子类,类似于LinkedList,也是使用双向链表来维护内部元素的关系。

举个例子:

import java.util.*;

public class eg4HashMap {
    public static void main(String[] args){
        HashMap map = new HashMap();    //创建Map对象
        map.put("1","张三");      //存储见和值
        map.put("2","李四");
        map.put("3","王五");
        System.out.println("直接输出Map对象:" + map + "\n先遍历Map集合中所有的键:");   

        //先遍历Map集合中所有的键,再根据键获取相应的值
        Set keySet = map.keySet();      //获取键的集合
        Iterator it = keySet.iterator();    //迭代键的集合
        while(it.hasNext()){
            Object key = it.next();
            Object value = map.get(key);    //通过键获取对应的值
            System.out.println(key + ":" + value);
        }

        //先获取集合中的所有映射关系,然后从映射关系中取出键和值
        System.out.println("先获取集合中的所有映射关系:");
        Set entrySet = map.entrySet();  //获取映射关系的集合
        Iterator iterator = entrySet.iterator();    //迭代映射关系的集合
        while (iterator.hasNext()){
            Map.Entry entry = (Map.Entry)(iterator.next());    //获取集合中键值对映射关系
            Object key = entry.getKey();
            Object value = entry.getValue();
            System.out.println(key + ":" + value);
        }
    }
}

0adf342697a344c1b553f207a4af4125.png

三、TreeMap集合

TreeMap集合是Map接口的一个实现类,它可以对集合中的元素的键值进行排序

创建Map集合:TreeMap map = new TreeMap();

TreeMap集合之所以可以对添加的元素的键值进行排序,其实现同TreeSet一样,TreeMap的排序也分为自然排序和比较排序两种。比较排序时,类需要实现comparator接口,并重写compare()方法。

四、HashTable集合

Map接口中还有一个实现类HashTale,它与HashMap十分相似,区别在于HashTable是线程安全的,不过HashTable存取元素时速度很慢,目前基本上被HashMap所取代,但HashTable的子类Properties在实际应用中十分重要,它主要用来存储字符串类型的键和值,在实际开发中经常使用Priperties集合来存取应用的配置项。

创建Properties对象:Properties p = new Properties();

设置键值对:p.setProperty("key", "value");

获取键值对:p.getProperty(key);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值