黑马程序员技术交流社区

标题: 请问为什么下面的代码会倒着打印出来。 [打印本页]

作者: 刘江华    时间: 2011-10-2 15:17
标题: 请问为什么下面的代码会倒着打印出来。
还有就是,我写了这两种方式,会不会有性能上的损失呢?
import java.util.*;
public class MapGeneric {

        /**
         * @param args
         */
        public static void main(String[] args) {               
                HashMap<String,Integer> map =new HashMap<String, Integer>();
                map.put("zhansan", 20);
                map.put("lisi",30);
                map.put("wangwu",10);
                Set<String> Kset =map.keySet();
                Iterator ite =Kset.iterator();
                while(ite.hasNext()){
                        String x=(String)ite.next();//倒着打印出来                       
                        System.out.println(x+":  "+map.get(x));
                }
                //换种方式,
                System.out.println("*****************************");               
                Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
                for(Map.Entry<String, Integer> entry: entrySet){
                        System.out.println(entry);//这里以K-V的形式打印。
                }
        }

}
作者: 匿名    时间: 2011-10-2 15:40
使用第一种方式之所以会倒着打印出来是因为你使用的是Hashmap集合存储数据的,该集合的特点是会按着自然顺序输出元素,例如按着字典顺序。
作者: 匿名    时间: 2011-10-2 15:46
标题: 回复 楼主 的帖子
Hashmap集合的特点是自然顺序储存数据。

Iterator ite =Kset.iterator();
                while(ite.hasNext()){
                        String x=(String)ite.next();//倒着打印出来                        
                        System.out.println(x+":  "+map.get(x));
                }
把上面的一段代码换为下面的for语句比较节省内存空间。
换成for(Iterator ite =Kset.iterator(); ite.hasNext();)
{
String x=(String)ite.next();//                     
                        System.out.println(x+":  "+map.get(x));
}
作者: 匿名    时间: 2011-10-2 23:43
用 LinkedHashMap
作者: 匿名    时间: 2011-10-3 11:15
谢谢各位了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2