你是否已经对每次从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接口所实现的类。
参考资料:
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值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)