`
tangkuo
  • 浏览: 100945 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

HashMap 类与内部类实现 Map 接口与内部接口

 
阅读更多
public interface Map<K,V> {


V get(Object key);
V put(K key, V value);

interface Entry<K,V> {
K getKey();
V getValue();
V setValue(V value);
}

}



public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable {
/**
     * The default initial capacity - MUST be a power of two.
     */
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

    /**
     * The maximum capacity, used if a higher value is implicitly specified
     * by either of the constructors with arguments.
     * MUST be a power of two <= 1<<30.
     */
    static final int MAXIMUM_CAPACITY = 1 << 30;

    /**
     * The load factor used when none specified in constructor.
     */
    static final float DEFAULT_LOAD_FACTOR = 0.75f;


/**
     * Basic hash bin node, used for most entries.  (See below for
     * TreeNode subclass, and in LinkedHashMap for its Entry subclass.)
     */
    static class Node<K,V> implements Map.Entry<K,V> {
        final int hash;
        final K key;
        V value;
        Node<K,V> next;

        Node(int hash, K key, V value, Node<K,V> next) {
            this.hash = hash;
            this.key = key;
            this.value = value;
            this.next = next;
        }

        public final K getKey()        { return key; }
        public final V getValue()      { return value; }
        public final String toString() { return key + "=" + value; }

        public final int hashCode() {
            return Objects.hashCode(key) ^ Objects.hashCode(value);
        }

        public final V setValue(V newValue) {
            V oldValue = value;
            value = newValue;
            return oldValue;
        }

        public final boolean equals(Object o) {
            if (o == this)
                return true;
            if (o instanceof Map.Entry) {
                Map.Entry<?,?> e = (Map.Entry<?,?>)o;
                if (Objects.equals(key, e.getKey()) &&
                    Objects.equals(value, e.getValue()))
                    return true;
            }
            return false;
        }
    }

}
分享到:
评论

相关推荐

    Hashmap实现了Map接口的底层实现.docx

    HashMap是Java编程语言中一种非常重要的数据结构,它实现了Map接口,允许存储键值对,且支持null键和null值。HashMap的底层实现基于数组和链表,这使得它具有较快的查找速度。以下是关于HashMap的详细说明: 一、...

    易语言源码易语言HashMap类源码.rar

    2. **哈希函数**:易语言HashMap类会包含一个内部的哈希函数,用于计算键的哈希值,并根据哈希值决定元素在内部数组中的位置。 3. **扩容机制**:当HashMap中存储的元素数量超过预设阈值时,它需要进行扩容以保持...

    Java8HashMap键与Comparable接口编程开

    在Java编程中,HashMap是Java集合框架中的一个重要成员,它提供了高效的存储和检索对象的机制。在Java 8中,HashMap有一些重要的优化...同时,理解HashMap内部如何利用Comparable接口进行排序也是优化代码性能的关键。

    HashMap类

    HashMap类在Java编程语言中是集合框架的重要组成部分,它是一个基于哈希表的Map接口实现。HashMap提供了存储和检索键值对(key-value pairs)的高效机制,允许使用null键和值。这篇博客将深入探讨HashMap的内部工作...

    hashmap与hashtable区别

    - **HashMap**:相比之下,`HashMap`是在Java 1.2版本中引入的新类,它同样实现了`Map`接口。与`Hashtable`不同的是,`HashMap`的设计更加现代化,性能也更好。 #### 2. 线程安全性 - **Hashtable**:该类是线程...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    HashMap是实现Map接口的类,它内部基于哈希表实现,提供了快速查找键值对的机制。HashMap是非同步的,适合于高并发环境下,但如果不考虑线程安全,HashMap的性能优于同步的HashTable。 4. HashTable类 HashTable是...

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    HashTable 是一种同步的 Map 实现类,它继承自 Dictionary 类,实现了 Map 接口。HashTable 是线程安全的,所有操作都是同步的,以避免并发访问引起的数据不一致问题。HashTable 不允许键或值为 Null。 TreeMap ...

    List接口和Map接口

    `Iterator`提供了遍历集合的一致性视图,它与集合的内部实现细节隔离。通过使用`Iterator`,开发人员可以编写与具体集合实现无关的代码,提高了代码的复用性和可维护性。 #### 六、泛型集合 Java集合框架中的类和...

    枚举 HashMap

    HashMap是一种基于哈希表的Map接口实现,它提供了快速的插入、查找和删除操作,时间复杂度通常为O(1)。通过将枚举值作为键(Key),相关属性或行为作为值(Value),我们可以创建一个映射关系,达到类似枚举的效果。...

    java 集合和内部类资料

    Map接口存储键值对,如HashMap、LinkedHashMap和TreeMap。HashMap快速查找,但不保证元素顺序;LinkedHashMap保持插入顺序或访问顺序;TreeMap基于红黑树,按键的自然顺序或自定义比较器排序。 内部类是Java中一个...

    Map实现类1

    Map接口定义了多种操作键值对的方法,而HashMap和TreeMap是两种常见的Map实现类。 1. HashMap - 数据结构:HashMap基于哈希表实现,内部使用数组加链表或者红黑树的结构。每个元素是一个内部类Node,实现了Map....

    HashMap与HashTable区别

    在Java编程语言中,`HashMap`和`HashTable`是两种非常重要的数据结构,它们都实现了`Map`接口,并提供了键值对的存储方式。这两种数据结构虽然相似,但在实现细节和使用场景上存在显著差异。下面将详细介绍`HashMap`...

    HashMap排序

    在给定的内容中,首先展示了一种使用匿名内部类和`Comparator`接口来对`HashMap`进行排序的方法。具体步骤如下: 1. **创建HashMap**:首先创建一个`HashMap`对象,并向其中添加一些键值对。 2. **转换为List**:将...

    Collection E、Map K,V接口底层实现类数据结构的区别和联系.pdf

    Collection接口的实现类通过数组或链表来存储元素,而Map,V&gt;接口的实现类则通过键值对映射关系来存储数据。了解这些细节有助于开发者根据应用场景选择合适的集合类型和实现,以达到最优的性能表现。

    HashMap的实现原理

    HashMap 是 Java 集合框架中一个非常重要的类,它实现了 Map 接口,并提供了基于哈希表的存储方式。与其它 Map 实现不同的是,HashMap 允许使用 `null` 键和 `null` 值。这种灵活性使得 HashMap 成为许多应用程序中...

    深入Java集合学习系列:HashMap的实现原理

    HashMap是一个基于哈希表的数据结构,它实现了Map接口,提供了快速的存取功能。本文将深入探讨HashMap的内部机制,包括其构造、工作原理、哈希函数、冲突解决策略以及扩容机制。 首先,HashMap的基本结构是由数组...

    电话本管理系统HashMap实现

    HashMap是Java集合框架中的一个核心类,它实现了Map接口。Map接口存储键值对(key-value pairs),而HashMap则使用哈希表数据结构来实现,提供平均时间复杂度为O(1)的插入、删除和查找操作。哈希表通过计算对象的...

    HashMap与HashTable和HashSet的区别

    在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程需求。本文将重点分析这三种数据结构之间的区别,特别是针对...

    Java面向对象程序设计-集合框架Map接口.pptx

    此外,对于农业信息系统开发,可能需要处理的不仅仅是学生信息,还可能涉及到农田数据、作物生长信息、气象数据等,都可以利用Map接口及其实现类进行高效管理。 总的来说,Java的Map接口,尤其是HashMap类,是处理...

    Map集合的继承关系图.pdf

    Map接口的继承关系图展示了Map本身及其子接口与实现类之间的层次结构。首先,Map接口有多个子接口,这些子接口为Map的不同功能和行为提供了额外的约定。比如: 1. SortedMap:这个子接口保证了在键中的顺序,提供了...

Global site tag (gtag.js) - Google Analytics