关于Map中key和Value的灵活获取(推荐给初学JAVA的受苦受难的兄弟姐妹们)
2014-08-31 09:50
826 查看
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.以上介绍的小例子希望可以帮助大家。
笔者认为很多人误解这两个类,或者说不太会灵活应用,下面我来简单说一下我的理解(仅供参考)。
→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.以上介绍的小例子希望可以帮助大家。
相关文章推荐
- java获取map中的最小KEY,最小VALUE
- java 之 map获取key和value
- java 获取 Map中所有的 key 和 value 值
- java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
- Java Map获取key和value
- Java 关于HashMap根据value反向获取key值
- java中获取map的key和value的方法
- java里面获取map的key和value的方法
- java map遍历、排序,根据value获取key
- java里面获取map的key和value的方法
- Java Map按键(Key)排序和按值(Value)排序
- java里面如何去获得map里面的key-value;
- Map 的一点分析:在java.util.Map加入了一样的key,则这个key值的value会覆盖掉原来的value
- Java中获取HashMap中所有的Key的值,获取所有的value的值
- java Map排序(按key和按value)
- How to sort a Map<Key, Value> on the values in Java?
- java Map 之 排序(key,value)
- java 遍历map中的key,和value 值
- java获取map的value值
- java 获取map中所有的key和value值