你是否已经对每次从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里面的值。
map内部是按照hash算法存储的,但如果能对map排序在某些时候还是有用的
/**
* @param h
* @return
* 实现对map按照value升序排序
*/
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedHashtableByValue(Map 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) {
Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString());
Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString());
return key1.compareTo(key2);
}
});
return entries;
}
/**
* @param h
* @return
* 实现对map按照key排序
*/
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedHashtableByKey(Map 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;
}
分享到:
相关推荐
System.out.println(entry.getKey()+"::::"+entry.getValue()); } } ``` 在上面的代码中,我们首先创建了一个HashMap对象,并将其初始化为一个空的Map集合。然后,我们使用put()方法将键值对添加到Map集合中。最后...
有多种遍历Map的方式,我们来讨论使用Map.Entry和Map.entrySet()的方式。 ### 方法一:使用Map.Entry和Map.entrySet() 使用Map.Entry和Map.entrySet()可以遍历整个Map,代码如下: ``` for (Map.Entry, String> me...
Map a = new HashMap(); //方法一 Iterator it = a.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next();... System.out.println(entry.getKey()+"="+entry.getValue()); }
这是我在编写struts2中遇到的问题,整理出来,包括截图,希望可以帮到大家
returnMap.put(entry.getKey(), entry.getValue()); } return returnMap; } ``` **解析**: 1. **创建列表**:首先,通过`map.entrySet()`方法获取到一个包含所有映射关系(键值对)的Set集合,并将其转换为一个...
Java 中的 Map、HashMap、TreeMap 使用详解 Map 是 Java 集合框架中的一个接口,用于存储键值对,根据键可以获取值。Map 中的键不允许重复,但值可以重复。在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 ...
要按Map的键进行排序,我们可以使用`Map.Entry.comparingByKey()`作为排序依据。以下是一个示例: ```java Map, Integer> codes = new HashMap(); codes.put("United States", 1); codes.put("Germany", 49); codes...
.sorted(Map.Entry., Integer>comparingByValue().reversed()) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, // 解决键冲突问题 LinkedHashMap::...
这部分代码演示了如何使用`getSortedHashtableByKey`方法获取排序后的`Map.Entry`数组,并遍历打印出键和对应的值。 ### 按值排序HashTable 代码还提供了一个按值排序`HashTable`的方法: ```java public static ...
Object value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); ``` 示例代码: ```java Map, String> emails = new HashMap(); emails.put("alice@example.com", "Alice"); ...
Map 遍历的三种方法 ... System.out.println(entry.getKey() + "--->" + entry.getValue()); } } ``` 这三种方法都可以遍历 Map 集合,但它们有不同的优缺点。开发者可以根据实际情况选择合适的遍历方法。
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } ``` - **方法三:推荐,通过`Map.entrySet()`遍历(效率较高)** 这种方式同样可以同时访问`key`和`value`,但使用增强...
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } ``` 3. **通过Map.entrySet遍历key和value(增强for循环)** 这种方式与第二种相似,也是遍历entrySet,但使用了Java 5...
`, `Set<Map.Entry, Integer>> entries = map.entrySet();` ArrayList是List接口的一个具体实现,它基于动态数组。ArrayList的特点是可以快速访问任意位置的元素,但插入和删除元素的效率相对较低,因为需要移动...
System.out.println("key=" + entry.getKey() + " and value=" + entry.getValue()); } ``` - **优点**:可以同时获取键和值,避免了多次查询操作,提高了遍历效率。 - **缺点**:代码稍微复杂一些。 - **...
System.out.println("key=" + entry.getKey() + " and value=" + entry.getValue()); } ``` ### 3. 通过增强型`for`循环遍历`Map.entrySet()` 这种方式类似于第二种方法,但使用了增强型`for`循环,使得代码更加...
${entry.value}"/> ``` 在这个例子中,`items`属性指定了要遍历的`java.util.Map`对象,`var`属性则定义了一个变量`entry`,用于保存当前迭代到的Map条目。`<c:out>`标签用于输出键和值。 #### 3. 获取特定键的...
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } ``` 当遍历空 Map 时,需注意避免 `NullPointerException`,所以在遍历前最好检查 Map 是否为空。 2. **使用 for-each ...
<br> Object key = entry.getKey(); <br> Object val = entry.getValue(); <br>} <br>或者: <br>Map map = new HashMap(); <br>for (Iterator iter = map.keySet().iterator(); iter.hasNext();)...
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } ``` 2. 对于值排序: ```java Collections.sort(list, new Comparator<Map.Entry, Integer>>() { @Override public int ...