map中有两种遍历方式,entrySet及keySet,使用时视具体情形定。
entrySet:同时取到key和value;
keySet:先取key值,再根据key得到value.
如果需要删除元素则需要使用迭代器,具体如下代码:
/*
* 文 件 名: TraverseMap.java
* 版 权: Maobang Technologies Co., Ltd. Copyright YYYY-YYYY, All rights reserved
* 描 述: <描述>
* 修 改 人: momo
* 修改时间: 2016年1月13日
* 需求编号: <需求编号>
* 缺陷编号: <缺陷编号>
* 修改内容: <修改内容>
*/
package testMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
/**
* <一句话功能简述>
* <功能详细描述>
*
* @author momo
* @version [版本号, 2016年1月13日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class TraverseMap
{
public static void main(String[] args)
{
traverseByKeySet();
traverseByEntrySet();
}
private static void traverseByEntrySet()
{
//方法一
System.out.println("---EntryKey遍历---");
Map<String, String> map = generateTestData("EntryKey");
Iterator<Entry<String, String>> iter = map.entrySet().iterator();
Entry<String, String> entry = null;
while (iter.hasNext())
{
entry = iter.next();
System.out.println("key=" + entry.getKey() + "---value="
+ entry.getValue());
if (Integer.valueOf(entry.getKey()) % 3 == 0)
{
//迭代器可删除元素
iter.remove();
}
}
//方法二
System.out.println("最后得到map---EntryKey遍历:");
for (Entry<String, String> entry2 : map.entrySet())
{
System.out.println("key=" + entry2.getKey() + "---value="
+ entry2.getValue());
}
//如果仅需取key或values时,可使用下述方式
for (String keys : map.keySet())
{
System.out.println("keys=" + keys);
}
for (String values : map.values())
{
System.out.println("values=" + values);
}
}
private static void traverseByKeySet()
{
//方法三
System.out.println("---keySet遍历---");
Map<String, String> map = generateTestData("keySet");
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext())
{
String key = iter.next();
String value = map.get(key);
System.out.println("key=" + key + "---value=" + value);
if (Integer.valueOf(key) % 3 == 0)
{
//迭代器可删除元素
iter.remove();
}
}
//方法四
System.out.println("最后得到map---keySet遍历:");
for (String key : map.keySet())
{
String value = map.get(key);
System.out.println("key=" + key + "---value=" + value);
}
}
private static Map<String, String> generateTestData(String type)
{
int num = 10;
Map<String, String> map = new LinkedHashMap<String, String>();
for (int i = 0; i < num; i++)
{
map.put(String.valueOf(i), type + i);
}
return map;
}
}