你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。标准的Map访问方法如下:
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;....
;}
}
然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。
幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;....
}
}
尽管增加了一行代码,我们却省略了许多对Map不必要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。
Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对 Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了Map.Entry类来转换,好,现在就用这 个类来作文章,我具体写了一个方法。
代码:
/**
* 方法名称:getSortedHashtable
* 参数:Hashtable h 引入被处理的散列表
* 描述:将引入的hashtable.entrySet进行排序,并返回
*/
public static Map.Entry[] getSortedHashtable(Hashtable h){
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries,new Comparator(){
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry)arg0).getKey();
Object key2 = ((Map.Entry)arg1).getKey();
return ((Comparable)key1).compareTo(key2);
}
});
return entries;
}
调用这个方法:
Map.Entry[] set = getSortedHashtable(t);
//perportyTable
for (int i=0;i<set.length;i++){
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
分享到:
相关推荐
在Golang中,`map`是一种非常重要的数据结构,它提供了一种通过键来查找对应值的方法。这里我们将详细介绍Golang中使用`map`需要注意的一些关键点。 1. **简介** - `map`是Golang的内建类型,用于存储键值对,键和...
Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ...
1. 通过Map.keySet遍历key和value 这是一种简单的遍历方法,通过遍历键的集合来获取键值对。 ```java Map, String> map = new HashMap(); map.put("aa", "@sohu.com"); map.put("bb", "@163.com"); map.put("cc", "@...
Map是一种键值对的数据结构,允许通过键(key)快速查找对应的值(value),具有很高的查找效率。 在算法方面,二分搜索是一种在有序数组中查找特定元素的有效方法。它通过每次比较中间元素来缩小搜索范围,每次...
下面我们将详细介绍几种实现这一功能的方法,并探讨它们的特点。 #### 方法一:使用`sorted()`函数与列表推导式 ```python def dict_to_list_method1(dct): # 使用sorted()函数对字典项按照键排序 dict_sorted =...
`aggregateByKey` 与 `reduceByKey` 类似,但它提供了更多的灵活性,允许用户自定义初始值和合并逻辑。 **示例代码:** ```scala val pairs = sc.parallelize(Array(("one", 1), ("two", 2), ("one", 3))) val ...
1. **Map阶段**:从输入的行中取出访问日期(从访问时间里面处理出来,注意为了做到排序输出此处必须得使用时间戳格式,而不能用传统的format格式)和访问地址拼接作为key,并取出用户IP作为value。 - Map输出:...
Map接口的方法包括put(key, value)添加键值对,get(key)获取值,containsKey(key)检查键是否存在,containsValue(value)检查值是否存在,remove(key)删除键及其对应的值,size()返回键值对数量。 在给定的代码示例...
- **特点**:映射是一种关联容器,它将键(key)与值(value)一一对应起来。每个键都是唯一的,而值则可以重复。映射中的元素也是按照键的自然顺序排序的。 - **典型用法**: - `find()`:查找键值。 - `insert()`:...
系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在...
主要包括以下几种: - **`vector`**: 动态数组,内部连续存储,支持随机访问。 - **`deque`**: 双端队列,两端都可以快速插入或删除元素。 - **`list`**: 双向链表,适合频繁插入和删除操作。 **示例代码**: ```...