在HashMap中有这样一种私有内部类——KeySet。
Java代码
KeySet实现了Set接口,似乎好像是一种新的Set类。其实不然,KeySet并不同于TreeSet或HashSet。它没有特殊的组织数据的功能。而且外部是无法直接获取一个KeySet对象。
事实上,KeySet是为了我们能够方便的获得HahMap中所有的键而设置的。它就是用Set<K>(K为HashMap中key的类型)作为键集。
Java代码
我们能过通过调用hashMap.KeySet()方法,将映射表中的所有键组织成Set结构。我们将这种集合内部的集合称为视图。关于视图的更多概念可以参照《Java 2核心技术 卷二 P106》。
除了KeySet视图外,还有EntrySet,Value视图。我们千万不要认为KeySet,EntrySet是新的集合类,只要把他们看做HashMap中部分数据的组织形式,方便迭代查找操作就可以了 。
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中部分数据的组织形式,方便迭代查找操作就可以了 。
发表评论
-
java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
2011-08-19 17:01 2516Exception in thread "main& ... -
打jar包
2011-05-26 18:35 1042打成jar包: 1、没有其他类库jar文件和插件 ... -
Java实现通用线程池
2011-05-05 23:11 1058线程池通俗的描述就是预先创建若干空闲线程,等到需要用多线程去处 ... -
Java tutorial
2011-05-05 21:49 1028http://download.oracle.com/java ... -
java.awt.component.repaint()
2011-05-05 18:57 1057repaint public void repaint()R ... -
validate
2011-05-05 17:21 753validate public void validate( ... -
Class.forName和New的比较
2011-04-26 14:46 720在初始化一个类,生成一个实例的时候,newInstance() ... -
Responding to Window-Closing Events
2011-04-26 03:00 789By default, when the user close ... -
Map、Collection、List接口的总结
2011-04-26 02:52 853Map接口: | + -- ... -
复杂的GridBagLayout
2011-02-07 16:06 1052今天终于耐着性子弄懂了GridBagLayout是怎么使用的。 ... -
swing中的布局管理器
2011-02-07 15:42 14604.CardLayout CardL ... -
swing中的最上层组件
2011-02-07 15:05 2760swing中几乎所有组件都是从JComponent衍生而来,也 ... -
Java swing 组件分层介绍:JRootPane,GlassPane,LayeredPane
2011-02-06 17:01 3071什么是Swing,什么又是ligh ... -
JTextArea操作
2011-01-11 18:03 1258JTextArea操作: (1)在JTextArea插入 ... -
double到int转换
2010-12-16 23:28 858double到int转换,有“截断”误差的。 可以通过+0.5 ... -
各种排序算法java实现
2010-11-25 15:20 603package org.rut.util.algorith ... -
Java中使用BigDecimal进行浮点数高精度计算
2010-11-25 15:18 826转自:http://chongtianpig.netbei.c ... -
利用java内存映射文件机制实现CRC循环冗余校验
2010-11-19 13:52 1115import java.nio.MappedByteBuf ... -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
2010-11-19 13:48 658十进制转成十六进制: Integer.toHexString ... -
JScrollPane 例解
2010-11-19 01:49 1544类层次结构图: java.lang.Object -- ...
相关推荐
在`HashMap`中,我们可以通过`entrySet()`、`keySet()`或`values()`方法获取迭代器,分别针对键值对、键或值进行迭代。 1. **使用`entrySet()`迭代**: 这是最常见的迭代方式,因为它允许同时访问键和值。首先,...
根据提供的内容,我们可以了解到遍历`HashMap`主要有两种方式:使用`keySet()`方法和使用`entrySet()`方法。 1. **使用keySet()方法** ```java Map map = new HashMap(); Iterator iter = map.keySet()....
Iterator iterator = hashmap.keySet().iterator(); while (iterator.hasNext()) { System.out.println(hashmap.get(iterator.next())); } ``` 这里,我们没有使用迭代器直接获取值,而是先获取键,再通过 `get()`...
通过entrySet()方法,我们可以遍历HashMap中的每个键值对(Entry)。这种方式不仅可以遍历到所有的键,还可以在单次遍历中直接获得与键相对应的值。对于需要同时处理键和值的场景,entrySet()是最为高效的方法。 **...
6. **遍历HashMap**:有两种方式遍历HashMap,一是通过`entrySet()`获取键值对的迭代器,二是通过`keySet()`获取键的迭代器再获取对应的值。 ```java for (Map.Entry, String> entry : map.entrySet()) { System....
8. **迭代器**:HashMap提供了迭代器`keySet()`、`values()`和`entrySet()`,分别用于获取键集合、值集合和键值对集合的迭代器,方便遍历HashMap的所有元素。 9. ** equals() 和 hashCode()**:插入HashMap的键对象...
这使得HashMap能够利用Map接口提供的通用方法,例如keySet(), values()和entrySet()等来操作键值对集合。 通过以上的知识点,我们可以构建出关于HashMap的基础技术框架,包括它的内部实现原理、性能特点、使用方法...
List, Integer>> arrayList = new ArrayList(hashMap.entrySet()); Collections.sort(arrayList, new Comparator, Integer>>() { public int compare(Map.Entry, Integer> o1, Map.Entry, Integer> o2) { return o...
9. **遍历方式**:HashMap可以通过`keySet()`、`values()`和`entrySet()`获取三种不同类型的迭代器,分别用于遍历键、值和键值对。 10. **初始容量**:在创建HashMap时,可以通过构造函数指定初始容量。若不指定,...
6. **迭代器遍历**:尽管遍历顺序不确定,但`HashMap`提供`keySet()`, `values()`和`entrySet()`方法来遍历键、值和键值对。 下面是一些关于`HashMap`的基本操作: - **插入键值对**:使用`put()`方法插入键值对,...
9. 其他特性:HashMap还提供了containsKey()、containsValue()、clear()等方法,以及keySet()、values()和entrySet()这三个集合视图,分别用于获取键集合、值集合和键值对集合,方便进行遍历和操作。 总的来说,...
本文将深入探讨`HashMap`的遍历方法,包括`keySet()`和`entrySet()`两种主要方式,并通过代码示例对比它们的性能差异。 #### 方法一:使用`keySet()`遍历 `keySet()`方法返回`HashMap`中的所有键的集合视图。通过...
JAVA遍历Map所有元素 ...我们可以使用entrySet()方法或keySet()方法来实现遍历,但是entrySet()方法的效率远远高于keySet()方法。因此,在实际开发中,我们应该尽量使用entrySet()方法来遍历Map中的所有元素。
8. **HashMap的遍历方式**:HashMap可以通过`keySet()`、`entrySet()`和`values()`方法分别获取键的集合、键值对的集合和值的集合进行遍历,其中`entrySet()`通常是最高效的遍历方式。 9. **HashMap与HashTable的...
HashMap提供了三种循环遍历方式,即for each map.entrySet()、显示调用map.entrySet()的集合迭代器、for each map.keySet()。每种遍历方式都有其特点和优缺势,本文将通过实例分析和性能测试来比较这三种遍历方式的...
- `HashTable`的一些方法名使用了过时的命名约定,如`elements()`和`keys()`,而`HashMap`使用了更符合Java集合框架的`entrySet()`, `keySet()`, `values()`方法。 在实际开发中,如果对线程安全有要求,可以选择`...
- **Node 接口**:代表HashMap中的一个节点,用于存储键值对。 - **KeySet 内部类**:提供了对HashMap键的视图,支持迭代等操作。 - **Values 内部类**:提供了对HashMap值的视图。 - **EntrySet 内部类**:提供了对...
HashMap遍历的常用方法主要有三种:迭代器(Iterator)遍历、键集(KeySet)遍历以及 Entry 集(entrySet)遍历。下面将逐一介绍这些方法。 1. 迭代器遍历: HashMap提供了迭代器接口(Iterator),可以通过调用`...
在Java编程中,HashMap是基于哈希表实现的Map接口的一个实现,它是Java集合框架的重要组成部分,提供了高效、快速的键值对存储和检索能力。HashMap允许任何类型的对象作为键和值,但要求键必须是唯一的,且键和值都...