如何取出 Map中key和value的值

如何取出 Map中key和value的值,第1张

你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用MapEntry类,你可以得到在同一时间得到所有的信息。标准的Map访问方法如下:

Set keys = mapkeySet( );

if(keys != null) {

Iterator iterator = keysiterator( );

while(iteratorhasNext( )) {

Object key = iteratornext( );

Object value = mapget(key);

;

;}

}

然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。

幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个MapEntry实例化后的对象集。 接着,MapEntry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:

Set entries = mapentrySet( );

if(entries != null) {

Iterator iterator = entriesiterator( );

while(iteratorhasNext( )) {

MapEntry entry =iteratornext( );

Object key = entrygetKey( );

Object value = entrygetValue();

;

}

}

尽管增加了一行代码,我们却省略了许多对Map不必要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。MapEntry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。

Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对 Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了MapEntry类来转换,好,现在就用这个类来作文章,我具体写了一个方法。

代码:

/

方法名称:getSortedHashtable

参数:Hashtable h 引入被处理的散列表

描述:将引入的hashtableentrySet进行排序,并返回

/

public static MapEntry[] getSortedHashtable(Hashtable h){

Set set = hentrySet();

MapEntry[] entries = (MapEntry[])settoArray(new MapEntry[setsize()]);

Arrayssort(entries,new Comparator(){

public int compare(Object arg0, Object arg1) {

Object key1 = ((MapEntry)arg0)getKey();

Object key2 = ((MapEntry)arg1)getKey();

return ((Comparable)key1)compareTo(key2);

}

});

return entries;

}

调用这个方法:

MapEntry[] set = getSortedHashtable(t);

//perportyTable

for (int i=0;i<setlength;i++){

Systemoutprintln(set[i]getKey()toString());

Systemoutprintln(set[i]getValue()toString());

}

map是基于散列表(哈希表)的,所以是单向映射,理论上也就无法支持由value快速查找key。但是还是有解决之道,笨方法是遍历来查找,还可以维护两个map,一个map的键,就是另一个map的值,反之亦然。

我不知道目前有没有封装了这样功能的现成的双向映射map,具体lz再搜一下吧。

方法1:keySet()

HashMap hashmp = ne HashMap();

hashmpput("aa", "111");

Set set = hashmpkeySet();

Iterator iter = setiterator();

while (iterhasNext()) {

String key = (String) iternext();

// printkey}

// traverse

for (String key : listget(pos)keySet() ) {

myKey = key;}

方法2:entrySet()

HashMap map;

Iterator i = mapentrySet()iterator();

while (ihasNext()) {

Object obj = inext();

String key = objtoString();}

// or

while (ihasNext()) {

Entry entry = (javautilMapEntry)itnext();

entrygetkey();

entrygetValue();}

扩展资料:

JavaMap集合

1Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的valuekey值还决定了存储对象在映射中的存储位置。

但不是key对象本身决定的,而是通过散列技术进行处理,可产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置Map集合包括Map接口以及Map接口所实现的类。

2Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的valuekey值还决定了存储对象在映射中的存储位置。

但不是key对象本身决定的,而是通过散列技术进行处理,可产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置Map集合包括Map接口以及Map接口所实现的类。

参考资料:

博客园-Map / HashMap 获取Key值的方法

java:Map param = new HashMap();

paramput("a","3333");

Systemoutprintln(paramget("a")); //3333

if(paramcontainsKey("a")){

paramput("a", "565");}

Systemoutprintln(paramget("a"));//565

map存值就类似于往一个瓶子中放东西,而key就是标签,value就是其中放的东西,而取值的时候就相当于取东西,要知道所要取的东西的标签才可以取东西,也就是mapget("key")。

key value根据关键字取值

如果辅以Real-Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数 量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。

百度百科-Key-Value

你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用MapEntry类,你可以得到在同一时间得到所有的信息。

标准的Map访问方法如下:

Set

keys

=

mapkeySet(

);

if(keys

!=

null)

{

Iterator

iterator

=

keysiterator(

实现思路:先排序,之后取出最大的一个即可。

import javautilArrays;

import javautilCollection;

import javautilHashMap;

import javautilMap;

import javautilSet;

public class MaxMapDemo {

public static void main(String[] args) {

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

mapput(1, 8);

mapput(3, 12);

mapput(5, 53);

mapput(123, 33);

mapput(42, 11);

mapput(44, 42);

mapput(15, 3);

Systemoutprintln(getMaxKey(map));

Systemoutprintln(getMaxValue(map));

}

/

 求Map<K,V>中Key(键)的最大值

 @param map

 @return

/

public static Object getMaxKey(Map<Integer, Integer> map) {

if (map == null) return null;

Set<Integer> set = mapkeySet();

Object[] obj = settoArray();

Arrayssort(obj);

return obj[objsize()-1];

}

/

 求Map<K,V>中Value(值)的最大值

 @param map

 @return

/

public static Object getMaxValue(Map<Integer, Integer> map) {

if (map == null) return null;

Collection<Integer> c = mapvalues();

Object[] obj = ctoArray();

Arrayssort(obj);

return obj[objsize()-1];

}

}

以上就是关于如何取出 Map中key和value的值全部的内容,包括:如何取出 Map中key和value的值、在C++中,map容器可以通过value来获得相应的key吗、如何获得map的key值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9593604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存