Java Map 映射


Map

  • Map 集合没有继承 Collection 接口,提供的是键到值的映射,是存储 键-值 对(key - value)的集合;
  • 通过键来标识对象在映射中的存储位置,键不可重复,键本身不能决定存储位置,而是通过一种散列技术处理,产生一个散列码的整数值;
  • 散列码常用作偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置;
  • 当调用的映射中没有元素存在时,会引发 NoSuchElementException 异常,当对象与映射中的元素不兼容时,会引发 ClassCastException 异常,如果使用映射不允许使用的 null 对象,会引发 NullPointerException 异常,当试图改变一个不允许修改的映射时,会引发 UnsupportedOperationException 异常;

1. 转换为集合(Set,Collection)

  • 映射不是类集,但是可以获得类集的视图,可以使用 entrySet() 方法,它返回一个包含了映射中元素的集合(Set),用 keySet() 可以得到键的类集视图,用 values() 可以得到值得类集视图;
类型 方法 说明
Set entrySet() 返回 Map 集合中所有 键-值 对的 Set 集合,Set 集合中元素的数据类型是 Map.Entry
Set keySet() 返回 Map 中所有 键 对应的 Set 集合
Collection values() 返回一个映射中包含的值得类集,映射循环使用 get() 和 put(),put() 将一个指定了键的值加入映射,可以使用键作为参数来调用 get() 方法,返回该值

2. 提供的方法

类型 方法 说明
Object put(Object key, Object value) 向 Map 集合中添加 键-值 对,返回 键 以前对应的值,如果没有返回 null
void putAll(Map m) 将所有来自 m 的输入加入调用映射
Object get(Object key) 返回指定键映射的值,如果此映射不包含该键的映射关系返回 null,Object 是值的数据类型
void clear() 删除所有 键-值 对
int size() 返回映射中 键-值 对的个数
int hashCode() 返回调用映射的散列码
boolean isEmpty() 如果映射是空的,返回 true
boolean containsKey(Object k) 如果映射包含了键 k,返回 true
boolean containsValue(Object v) 如果映射包含了值 v,返回 true
Object remove(Object k) 删除键为 k 的输入
boolean equals(Object o) 如果 o 是映射并包含了相同的输入,返回 true
import java.util.HashMap;
import java.util.TreeSet;

public class test {
    public static void main(String[] args) {
        TreeSet ts = new TreeSet();
        ts.add(3);
        ts.add(4);
        TreeSet ts2 = new TreeSet();
        ts2.add(3);
        ts2.add(4);
        System.out.println(ts.equals(ts2));//true
        HashMap hm = new HashMap();
        hm.put(3, 3);
        hm.put(4, 4);
        HashMap hm2 = new HashMap();
        hm2.put(3, 3);
        hm2.put(4, 4);
        System.out.println(hm.equals(hm2));//true
    }
}

3. 实现类

  • HashMap 类:key 与 value 都可以为 null,线程不安全;
  • TreeMap 类:key 不能为null,value 可以为 null,线程不安全;
发布了59 篇原创文章 · 获赞 60 · 访问量 1575

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104497735