1. Map类的遍历总共分为三种(有的分成四种,但我觉得就三种)
1.1. 按照key
1.2. 按照value(但是此种不能遍历key,只能遍历value)
1.3. 利用Map.Entry
2. 下面是代码:
首先是main函数:
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<Integer,String> map = new HashMap<Integer,String>();
//Map<Integer,String> map = new LinkedHashMap<Integer,String>();
//Map<Integer,String> map = new TreeMap<Integer,String>();
map.put(1, "one");
map.put(5, "five");
map.put(3, "three");
map.put(2, "two");
traverseByKey(map);
traverseByValue(map);
traverseByEntry(map);
}
按照key遍历:(其中没有用泛型,因为这样更具有普适性,后面的排序就是直接用的这里的遍历方法,很方便)
public static void traverseByKey(Map map)
{
Set keySet = map.keySet();
Iterator iter = keySet.iterator();
System.out.println("traverseByKey: ");
while(iter.hasNext())
{
//Integer key = (Integer)iter.next();
//get里面会直接发生强转。
Object o = iter.next();
System.out.println(o+": "+map.get(o));
}
System.out.println("traverseByKey: end");
}
按照Value:
//按照Value,但是不能遍历key
public static void traverseByValue(Map<Integer,String> map)
{
//不能用向下转型,向下转型只有在你知道他本来是什么类型的情况下才会成功。
Collection<String> values = (Collection<String>) map.values();
System.out.println("traverseByValue: ");
for(String value: values)
{
System.out.println("value: "+value);
}
System.out.println("traverseByValue: end");
}
按照Entry:
//按照Entry
public static void traverseByEntry(Map<Integer,String> map)
{
System.out.println("traverseByEntry: ");
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
for(Map.Entry<Integer, String> entry: entrySet)
{
System.out.println(entry.getKey()+": "+entry.getValue());
}
System.out.println("traverseByEntry: end");
}