今天做项目时,形式上
遇到了需要根据map的value得到相应的key,然后就想当然的通过value得到key,但实际用起来发现行不通,虽然项目上的问题通过别的方法得以解决,但Map的key和value还是有点迷糊,所以就记下来,以免大家犯同样的错误(相信大家基础很好,根本不会出现这样的情况)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
/**
* Map是不能保证顺序的,内部有一套自己的排序机制,已达到快速检索的目的,HashMap是通过Hash值排序的。
* 如果想要按以前的顺序只能采用List或者其他的顺序性结构
*
*/
public class MapKeyAndValue {
public static void main(String args[]) {
testMap();
System.out.println("-----------------------------");
testTreeMap();
}
public static void testMap() {
// HashMap中数据的存放没有顺序 HashMap中value可以重复,key不可以重复!!!!!所以通过value得到key的思路不可取
// 一个key对应一个value,而一个value可以对应多个key(不是真正意义上的对应,而是value值可以重复,好像是对应了多个key)
// 如果能通过value得到key,那么key就没有存在的意义了。
Map<String, String> map = new HashMap<String, String>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "d");
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println("HashMap - key is " + key + ", value is " + map.get(key));
}
}
public static void testTreeMap() {
// TreeMap中数据的存放有顺序,但TreeMap的效率没有HashMap效率高
// 存放的数据不考虑顺序的情况下用HashMap,考虑顺序的情况下用TreeMap或者List
TreeMap<String, String> treeMap = new TreeMap<String, String>();
treeMap.put("1", "a");
treeMap.put("2", "b");
treeMap.put("3", "c");
treeMap.put("4", "d");
Iterator<String> iter = treeMap.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println("TreeMap - key is " + key + ", value is "
+ treeMap.get(key));
}
}
}
输出结果:
HashMap - key is 3, value is c 顺序不是你想象的那样
HashMap - key is 2, value is b
HashMap - key is 4, value is d
HashMap - key is 1, value is a
-----------------------------
TreeMap - key is 1, value is a
TreeMap - key is 2, value is b
TreeMap - key is 3, value is c
TreeMap - key is 4, value is d
分享到:
相关推荐
对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的...
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
"对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...
本篇将详细介绍如何在嵌套的Map和List中获取key和value值。 首先,让我们理解什么是嵌套的Map。一个Map是一个键值对的集合,其中每个键都是唯一的,并且关联着一个值。当一个Map的值本身又是一个Map时,我们就说这...
map、 key' 和 value 的 取值 and so on
JAVA中获取Map的Key和Value的方法 在Java编程中,Map是一种常用的数据结构,它可以存储键值对(Key-Value)。然而,在实际应用中,我们经常需要获取Map中的Key和Value。那么,如何获取Map中的Key和Value呢?下面...
C++读取INI文件中指定Section下的所有key和keyvalue存放到map中
javaScript,重写Array 类似java map的key,value键值对结构
在本文中,我们讨论了如何使用 Java Map 通过 key 或者 value 过滤的实例代码,包括传统的方式、Java 8 Lambda 和 Google Guava 库的方法。这些方法可以帮助我们简化代码、提高性能和满足特定的业务需求。
四种方法都可以遍历取出Map集合中的键值数据,但是 EntrySet()遍历和Iterator遍历EntrySet()效率更高,推荐使用。最后,需要注意的是,Map集合未实现Iterable接口,需要借助set集合或EntrySet()来遍历键值对。
当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...
本文将详细介绍如何在JavaScript中使用循环来获取Map的所有key和value,并提供两种实现方法。 **方法一:使用for...in循环** 在JavaScript中,`for...in`循环通常用于遍历对象的可枚举属性。尽管Map不是直接支持`...
在本篇博客中,我们将深入探讨Groovy中Map的基本操作,特别是通过标题和描述中给出的例子。 首先,创建一个Map非常简单。例如,`def map = [a:1,b:2,c:3]`定义了一个Map,其中包含三个键值对,`a`对应1,`b`对应2,...
Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 Value 排序 在 Java8 中,我们可以使用 Stream 操作对 ...
- **检查是否包含key或value:** 使用`containsKey()`和`containsValue()`方法检查Map中是否存在特定的key或value。 - **获取Map大小:** 使用`size()`方法获取Map中键值对的数量。 在实际开发中,选择合适的方法...
NULL 博文链接:https://zzcjobstudy.iteye.com/blog/2066185
总结来说,这段代码展示了如何在HashMap中通过值来查找键,这通常需要遍历整个HashMap的Entry集合,并使用Map.Entry的`getValue()`和`getKey()`方法进行比较。虽然这种方法在大数据量的情况下效率较低,但在某些场景...
在 C++ 中,我们可以使用 `std::find_if` 算法和 lambda 表达式或函数对象来实现根据 value 找到 key 的功能。这两种方法都可以达到我们的目的,但是函数对象可以使我们的代码更加灵活和可读。 知识点 * C++ 中的 ...
然而,有时我们需要对Map中的值进行排序,例如按照value的大小进行升序或降序排列。这篇博客"对map里面的value进行排序"探讨的就是如何实现这一需求。 首先,我们了解Map接口的基本概念。Map接口不直接支持排序,...
Java实现过滤掉map集合中key或value为空的值需要遍历map、判断空值和移除空值。通过使用Iterator和remove()方法,我们可以轻松地实现这个功能。同时,我们也需要考虑到多种情况,例如键和值可能为空的情况。