关于Map中key和Value的灵活获取(推荐给初学JAVA的受苦受难的兄弟姐妹们)
1、Map和Map.Entery区别
笔者认为很多人误解这两个类,或者说不太会灵活应用,下面我来简单说一下我的理解(仅供参考)。
→Map : 无可厚非,学过java的不管是小鸟还是老牛都已经敲得不想再敲了,是属于一个键值对的集合类,属于线程不安全的,关于Map线程安全的可以另外实现,以后会讲到。
For Example: Map<String,Object> map = new HashMap<String,Object>();
map.put("1",1);//分区1
map.put("2",2);//分区1
key和value只是我们自己定义的对象,并且key是唯一不重复的,value可以重复,仅此而已。
→Map.Entry是一个Map的衍生类,功能更强大,可以通过 map.enteySet()获取,是一个实例化或后对象集,
For Example: Map.Entery<String,Object> map = map.entrySet();
map.put("1",1);//分区1
map.put("2",2);//分区2
是以一个Set容器承载的,可以迭代遍历,并且提供了getKey()和getValue(),setValue()等常用的方法;
★ example 1
public class TestMap {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String,Object>();
map.put("1", "One");
map.put("2", "Two");
map.put("3", "Three");
map.put("4", "Four");
map.put("5", "Five");
System.out.println(TestMap.mapConvertStringOne(map));
}
public static String mapConvertStringOne(Map<String,Object> mapEmp){
StringBuilder returnString = new StringBuilder();
Set<Map.Entry<String, Object>> set = mapEmp.entrySet();
Map.Entry<String, Object> entry = null;
returnString.append("{");
for(Iterator<Map.Entry<String, Object>> iterator2 = set.iterator();iterator2.hasNext();){
entry = iterator2.next();
returnString.append(entry.getKey());
returnString.append(":");
returnString.append(entry.getValue());
if(iterator2.hasNext()){
returnString.append(",");
}
}
returnString.append("}");
return returnString.toString();
}
}
运行结果: {3:Three,2:Two,1:One,5:Five,4:Four}// 可以看出无序排列
★ example 2
@SuppressWarnings("rawtypes")
private static String mapConvertStringTwo(Map<String,Object> mapEmp){
StringBuilder returnString = new StringBuilder();
Set<String> keySet = mapEmp.keySet();
returnString.append("{");
for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
returnString.append(key);
returnString.append(":");
returnString.append(mapEmp.get(key));
if(iterator.hasNext()){
returnString.append(",");
}
}
returnString.append("}");
return returnString.toString();
}
运行结果 : {3:Three,2:Two,1:One,5:Five,4:Four}// 可以看出无序排列
本人认为如果没有什么特殊处理 第二个例子更实用一些,简单易懂都是大家平时用的,另外关于性能方面HashMap性能相对HashTable更好,在开发上基本都是实用HashMap.以上介绍的小例子希望可以帮助大家。