`
OracleX
  • 浏览: 123892 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

Map中的key和value

    博客分类:
  • J2SE
阅读更多

今天做项目时,形式上 遇到了需要根据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
 
0
5
分享到:
评论

相关推荐

    对Map的key和value进行排序

    对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的...

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    对Map按key和value分别排序

    "对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...

    嵌套Map或者List获取key、value值

    本篇将详细介绍如何在嵌套的Map和List中获取key和value值。 首先,让我们理解什么是嵌套的Map。一个Map是一个键值对的集合,其中每个键都是唯一的,并且关联着一个值。当一个Map的值本身又是一个Map时,我们就说这...

    map key and value

    map、 key' 和 value 的 取值 and so on

    详解JAVA里面获取map的key和value的方法

    JAVA中获取Map的Key和Value的方法 在Java编程中,Map是一种常用的数据结构,它可以存储键值对(Key-Value)。然而,在实际应用中,我们经常需要获取Map中的Key和Value。那么,如何获取Map中的Key和Value呢?下面...

    C++读取INI文件中指定Section下的所有key和keyvalue存放到map中

    C++读取INI文件中指定Section下的所有key和keyvalue存放到map中

    js 重写Array 类似map key,value结构

    javaScript,重写Array 类似java map的key,value键值对结构

    Java Map 通过 key 或者 value 过滤的实例代码

    在本文中,我们讨论了如何使用 Java Map 通过 key 或者 value 过滤的实例代码,包括传统的方式、Java 8 Lambda 和 Google Guava 库的方法。这些方法可以帮助我们简化代码、提高性能和满足特定的业务需求。

    Java 遍历取出Map集合key-value数据的4种方法

    四种方法都可以遍历取出Map集合中的键值数据,但是 EntrySet()遍历和Iterator遍历EntrySet()效率更高,推荐使用。最后,需要注意的是,Map集合未实现Iterable接口,需要借助set集合或EntrySet()来遍历键值对。

    Android 对Map按key和value分别排序的实例

    当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...

    js循环map 获取所有的key和value的实现代码(json)

    本文将详细介绍如何在JavaScript中使用循环来获取Map的所有key和value,并提供两种实现方法。 **方法一:使用for...in循环** 在JavaScript中,`for...in`循环通常用于遍历对象的可枚举属性。尽管Map不是直接支持`...

    groovy中map的基本操作1

    在本篇博客中,我们将深入探讨Groovy中Map的基本操作,特别是通过标题和描述中给出的例子。 首先,创建一个Map非常简单。例如,`def map = [a:1,b:2,c:3]`定义了一个Map,其中包含三个键值对,`a`对应1,`b`对应2,...

    java8 stream 操作map根据key或者value排序的实现

    Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 Value 排序 在 Java8 中,我们可以使用 Stream 操作对 ...

    Java Map如何根据key取value以及不指定key取出所有的value

    - **检查是否包含key或value:** 使用`containsKey()`和`containsValue()`方法检查Map中是否存在特定的key或value。 - **获取Map大小:** 使用`size()`方法获取Map中键值对的数量。 在实际开发中,选择合适的方法...

    关于map的 一个key对应多个value

    NULL 博文链接:https://zzcjobstudy.iteye.com/blog/2066185

    HashMap通过VALUE反向求KEY的方法

    总结来说,这段代码展示了如何在HashMap中通过值来查找键,这通常需要遍历整个HashMap的Entry集合,并使用Map.Entry的`getValue()`和`getKey()`方法进行比较。虽然这种方法在大数据量的情况下效率较低,但在某些场景...

    C++ map 根据value找key的实现

    在 C++ 中,我们可以使用 `std::find_if` 算法和 lambda 表达式或函数对象来实现根据 value 找到 key 的功能。这两种方法都可以达到我们的目的,但是函数对象可以使我们的代码更加灵活和可读。 知识点 * C++ 中的 ...

    对map里面的value进行排序

    然而,有时我们需要对Map中的值进行排序,例如按照value的大小进行升序或降序排列。这篇博客"对map里面的value进行排序"探讨的就是如何实现这一需求。 首先,我们了解Map接口的基本概念。Map接口不直接支持排序,...

    Java实现过滤掉map集合中key或value为空的值示例

    Java实现过滤掉map集合中key或value为空的值需要遍历map、判断空值和移除空值。通过使用Iterator和remove()方法,我们可以轻松地实现这个功能。同时,我们也需要考虑到多种情况,例如键和值可能为空的情况。

Global site tag (gtag.js) - Google Analytics