`

HashMap中的KeySet,EntrySet

    博客分类:
  • java
阅读更多
在HashMap中有这样一种私有内部类——KeySet。

  Java代码   

public class HashMap<K,V>{ 
     private class KeySet extends AbstractSet<K> { 
        .... 
     } 
}



KeySet实现了Set接口,似乎好像是一种新的Set类。其实不然,KeySet并不同于TreeSet或HashSet。它没有特殊的组织数据的功能。而且外部是无法直接获取一个KeySet对象。

  事实上,KeySet是为了我们能够方便的获得HahMap中所有的键而设置的。它就是用Set<K>(K为HashMap中key的类型)作为键集。

  Java代码 
 public Set<K> keySet() { 
    Set<K> ks = keySet; 
    return (ks != null ? ks : (keySet = new KeySet())); 
 }



我们能过通过调用hashMap.KeySet()方法,将映射表中的所有键组织成Set结构。我们将这种集合内部的集合称为视图。关于视图的更多概念可以参照《Java 2核心技术  卷二 P106》。

  除了KeySet视图外,还有EntrySet,Value视图。我们千万不要认为KeySet,EntrySet是新的集合类,只要把他们看做HashMap中部分数据的组织形式,方便迭代查找操作就可以了 。

分享到:
评论

相关推荐

    hashMap利用iterator迭代器迭代元素方法

    在`HashMap`中,我们可以通过`entrySet()`、`keySet()`或`values()`方法获取迭代器,分别针对键值对、键或值进行迭代。 1. **使用`entrySet()`迭代**: 这是最常见的迭代方式,因为它允许同时访问键和值。首先,...

    如何得到hashmap的索引

    根据提供的内容,我们可以了解到遍历`HashMap`主要有两种方式:使用`keySet()`方法和使用`entrySet()`方法。 1. **使用keySet()方法** ```java Map map = new HashMap(); Iterator iter = map.keySet()....

    hashmap 实例

    Iterator iterator = hashmap.keySet().iterator(); while (iterator.hasNext()) { System.out.println(hashmap.get(iterator.next())); } ``` 这里,我们没有使用迭代器直接获取值,而是先获取键,再通过 `get()`...

    Java HashMap的三种遍历方法及优缺点含示例

    通过entrySet()方法,我们可以遍历HashMap中的每个键值对(Entry)。这种方式不仅可以遍历到所有的键,还可以在单次遍历中直接获得与键相对应的值。对于需要同时处理键和值的场景,entrySet()是最为高效的方法。 **...

    hashmap使用实例

    6. **遍历HashMap**:有两种方式遍历HashMap,一是通过`entrySet()`获取键值对的迭代器,二是通过`keySet()`获取键的迭代器再获取对应的值。 ```java for (Map.Entry, String&gt; entry : map.entrySet()) { System....

    HashMap的数据结构

    8. **迭代器**:HashMap提供了迭代器`keySet()`、`values()`和`entrySet()`,分别用于获取键集合、值集合和键值对集合的迭代器,方便遍历HashMap的所有元素。 9. ** equals() 和 hashCode()**:插入HashMap的键对象...

    HashMap.pdf

    这使得HashMap能够利用Map接口提供的通用方法,例如keySet(), values()和entrySet()等来操作键值对集合。 通过以上的知识点,我们可以构建出关于HashMap的基础技术框架,包括它的内部实现原理、性能特点、使用方法...

    HashMap排序

    List, Integer&gt;&gt; arrayList = new ArrayList(hashMap.entrySet()); Collections.sort(arrayList, new Comparator, Integer&gt;&gt;() { public int compare(Map.Entry, Integer&gt; o1, Map.Entry, Integer&gt; o2) { return o...

    hashmap.zip

    9. **遍历方式**:HashMap可以通过`keySet()`、`values()`和`entrySet()`获取三种不同类型的迭代器,分别用于遍历键、值和键值对。 10. **初始容量**:在创建HashMap时,可以通过构造函数指定初始容量。若不指定,...

    Java-HashMap.rar_hashmap_java hashmap

    6. **迭代器遍历**:尽管遍历顺序不确定,但`HashMap`提供`keySet()`, `values()`和`entrySet()`方法来遍历键、值和键值对。 下面是一些关于`HashMap`的基本操作: - **插入键值对**:使用`put()`方法插入键值对,...

    hashMap具体详解

    9. 其他特性:HashMap还提供了containsKey()、containsValue()、clear()等方法,以及keySet()、values()和entrySet()这三个集合视图,分别用于获取键集合、值集合和键值对集合,方便进行遍历和操作。 总的来说,...

    HashMap遍历

    本文将深入探讨`HashMap`的遍历方法,包括`keySet()`和`entrySet()`两种主要方式,并通过代码示例对比它们的性能差异。 #### 方法一:使用`keySet()`遍历 `keySet()`方法返回`HashMap`中的所有键的集合视图。通过...

    JAVA遍历Map所有元素.doc

    JAVA遍历Map所有元素 ...我们可以使用entrySet()方法或keySet()方法来实现遍历,但是entrySet()方法的效率远远高于keySet()方法。因此,在实际开发中,我们应该尽量使用entrySet()方法来遍历Map中的所有元素。

    HashMap资料.zip

    8. **HashMap的遍历方式**:HashMap可以通过`keySet()`、`entrySet()`和`values()`方法分别获取键的集合、键值对的集合和值的集合进行遍历,其中`entrySet()`通常是最高效的遍历方式。 9. **HashMap与HashTable的...

    Java HashMap三种循环遍历方式及其性能对比实例分析

    HashMap提供了三种循环遍历方式,即for each map.entrySet()、显示调用map.entrySet()的集合迭代器、for each map.keySet()。每种遍历方式都有其特点和优缺势,本文将通过实例分析和性能测试来比较这三种遍历方式的...

    HashMap与HashTable的区别(含源码分析)

    - `HashTable`的一些方法名使用了过时的命名约定,如`elements()`和`keys()`,而`HashMap`使用了更符合Java集合框架的`entrySet()`, `keySet()`, `values()`方法。 在实际开发中,如果对线程安全有要求,可以选择`...

    HashMap 概述 精讲 .md

    - **Node 接口**:代表HashMap中的一个节点,用于存储键值对。 - **KeySet 内部类**:提供了对HashMap键的视图,支持迭代等操作。 - **Values 内部类**:提供了对HashMap值的视图。 - **EntrySet 内部类**:提供了对...

    java遍历HashMap简单的方法

    HashMap遍历的常用方法主要有三种:迭代器(Iterator)遍历、键集(KeySet)遍历以及 Entry 集(entrySet)遍历。下面将逐一介绍这些方法。 1. 迭代器遍历: HashMap提供了迭代器接口(Iterator),可以通过调用`...

    JAVA中HashMap的用法.docx

    在Java编程中,HashMap是基于哈希表实现的Map接口的一个实现,它是Java集合框架的重要组成部分,提供了高效、快速的键值对存储和检索能力。HashMap允许任何类型的对象作为键和值,但要求键必须是唯一的,且键和值都...

Global site tag (gtag.js) - Google Analytics