
java 获取map中所有的key和value值
javautilIterator 对 collection 进行迭代的迭代器。
javautilIterator it = mapentrySet()iterator();
while(ithasNext()){
javautilMapEntry entry = (javautilMapEntry)itnext();
entrygetKey() //返回对应的键
entrygetValue() //返回对应的值
}
以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,
然后根据key,依次从Map中去数据,基本方式如下:
Map<String,String> testData = new HashMap<String, String>();
Set<String> keys = testDatakeySet();
for(String key :keys){
Systemoutprintln(key+" "+testDataget(key));
}
上述其中是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现还Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<MapEntry<K, V>> entrySet();方法。
也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法:
Set<Entry<String, String>> entries = testDataentrySet();
for (Entry<String, String> entry : entries) {
Systemoutprintln(entrygetKey()+":"+entrygetValue());
}
当少量的数据时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种快。
当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。
java中规定map集合中key值必须唯一,value值可以重复,所以通过value来找key可能会出现一个value对应多个key的情况,API中也没有通过value寻找key的方法,所以只能通过自己的方法来获得key值
Map<Integer,String> map=new HashMap<Integer,String>();mapput(1, "一");
mapput(2, "二");
mapput(3, "三");
mapput(4, "二");
String k="二";
Set<Integer> set=mapkeySet();
for(Integer str:set){
if(kequals(mapget(str))){
Systemoutprintln(str);
}
}
存在对应的key却获取不到的原因有
可以如果是对象的话,记得查看对象hash方法是否满足自己业务,因为key是取对象hash值来进行存储的。
key的开始跟结束存在空格
key的开头为\uFEFF 字符,正常是看不出来的,debug模式看key字符串的value才能看出来 :
这个\uFEFF到底是个啥???叫做BOM。
BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码,但它对于文件的读者来说是不可见字符。
BOM定义:>
以上就是关于java怎么获取map的key全部的内容,包括:java怎么获取map的key、java用map通过value能找到key吗、HashMap key使用注意事项 key“存在“却获取不到原因等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)