java集合类分析-map

不同于list还有set的单个元素的组织形式,map要求的保存的是一个组对象,也即使键值对。对jdk中的map源码是比较重要的,因为通过分析jdk中set的源码可以发现其实就是map的一层包装,实际上底层都是在调用map的具体实现的操作。

public interface Map<K,V> {
    // Query Operations
//返回map的大小
   int size();
   //判断map是否为空
   boolean isEmpty();
//是否包含该键值
    boolean containsKey(Object key);
//是否包含该值
    boolean containsValue(Object value);

    //返回键值为key的对象的值
    V get(Object key);

// Modification Operations
//插入键值对
    V put(K key, V value);
//删除
    V remove(Object key);

    // Bulk Operations
  	//添加m中的元素到map中去
    void putAll(Map<? extends K, ? extends V> m);
//清空
    void clear();

    // Views
//返回key集合
    Set<K> keySet();
//返回值集合
    Collection<V> values();

   //返回键值对集合
    Set<Map.Entry<K, V>> entrySet();

    // 键值对操作接口
    interface Entry<K,V> {
       //返回key
        K getKey();
//返回value
        V getValue();
//设置value
        V setValue(V value);

        boolean equals(Object o);

        /**
         * Returns the hash code value for this map entry.  The hash code
         * of a map entry <tt>e</tt> is defined to be: <pre>
         *     (e.getKey()==null   ? 0 : e.getKey().hashCode()) ^
         *     (e.getValue()==null ? 0 : e.getValue().hashCode())
         * </pre>
         * This ensures that <tt>e1.equals(e2)</tt> implies that
         * <tt>e1.hashCode()==e2.hashCode()</tt> for any two Entries
         * <tt>e1</tt> and <tt>e2</tt>, as required by the general
         * contract of <tt>Object.hashCode</tt>.
     */
        int hashCode();
    }
    // Comparison and hashing
    boolean equals(Object o);
    int hashCode();
}

  

时间: 2024-09-30 09:22:23

java集合类分析-map的相关文章

java集合类分析-identyhashmap

一.前言 前面已经分析了HashMap与LinkedHashMap,现在我们来分析不太常用的IdentityHashMap,从它的名字上也可以看出来用于表示唯一的HashMap,仔细分析了其源码,发现其数据结构与HashMap使用的数据结构完全不同,因为在继承关系上面,他们两没有任何关系.下面,进入我们的分析阶段. 二.IdentityHashMap示例 import java.util.Map; import java.util.HashMap; import java.util.Identi

Java 集合类之Map探究

Java Map存在于java.util包中,是一个集合类,常见的集合类还有List.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. 本文利用一张类图简述一个Map相关的组织结构.类图如下: 类图说明: Map是一个顶级接口,从类图中可以看出主要包括了几个方法(部分).SortedMap和ConcurrentMap接口继承自Map接口,从名字就能看出一个是排序相关接口,一个是同步所需接口. AbstractMap是一个实现了Map接口的

java集合类分析-hashmap

一.HashMap概述二.HashMap的数据结构三.HashMap源码分析     1.关键属性     2.构造方法     3.存储数据     4.调整大小 5.数据读取      6.HashMap的性能参数 一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.)此类不保证映射的顺序,特别是它不保证该顺序

Java集合类分析,初始化

Java集合是常用的数据类型,在此详细分析接口和实现类.整个集合框架就围绕一组标准接口而设计,学习集合框架有助开发实践. 框架体系图 1.Collection 接口Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set).Collection 接口存储一组不唯一,无序的对象. 2.List 接口List接口是一个有序的 Collec

java集合类分析-Treeset

//从下面的treeset的源代码可以看出它基本上就是treeMap的一层包装,因此这里过多的介绍,详细可以看treeMap的具体的实现//实现了NavigableSet.以及set接口 其中NavigableSet实现的是sortSet接口 public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable { ///这里就

Java集合类之List,Set探究

Collection是一个顶层的接口,在集合类中还有Map也属于顶层接口(参考Java集合类之Map探究),本文通过一张类图描述List和Set的基本结构. 类图解析: Collection是一个顶层的接口,定义了一系列方法,List和Set是继承自Collection的接口. 每个Collection都可以产生一个Iterator(参考Java iterator与iterator模式),从而可以利用Iterator进行遍历. AbstractCollection是Collection的抽象实现

[Java] 集合类(List、Set、Map的基本使用)

数组是一种很常见的数据结构,开始接触编程的时候多数程序都和数组相关.刚开始接触Java时也是一直使用数组写一些程序,后来越来越觉得... 数组是一种很常见的数据结构,开始接触编程的时候多数程序都和数组相关.刚开始接触Java时也是一直使用数组写一些程序,后来越来越觉得数组这东西没法满足需求了,这时一位"前辈"对我说了一句:不会用集合类就等于没学过Java.然后才知道有集合类. 想想已经是3.4年前的事了,时间如白驹过隙啊. 什么时候数组会显得力不从心,没法满足需求,需要集合类呢? 不知

Java集合排序及java集合类详解--(Collection, List, Set, Map)

1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情. 举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号.我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内

Java集合类: Set、List、Map、Queue使用

目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了. 集合类主要负责保存.盛装其他数据,因此集合类也被称为容