方法1:
List<User> userList = getUserList();
for (User user : userList)
{
    System.out.println(user.getUserid);
}方法2:
List userList = (ArrayList)getUserList();
for (int i=0;i < userList.length; i++)
{
    User user = (User)userList.get(i);
    System.out.println(user.getUserid);
}请问以上那种方法效率更高呢?或者更好呢?
注:之前我都是用后一种方法,对第一种总觉得不美观,没用它,后来我看了不少其它人代码,感觉很多人都喜欢用第一种,而自己也
有点脱离大众的感觉啊,心里怪怪的,想改过来,但工作量要大,不改呢,要总觉得脱离主流,我测试过,感觉两者效率差不多(也许我数据
量比较小吧,没看出来),要有点不想改了,可是用第2种编译器老是有警告提示,又很不爽,各位大侠对这两种方法谈谈看法吧,谢了.

解决方案 »

  1.   

    Java中父类与子类对象的转换中,你用子类对象强制转换父类对象,处理器需要处理
      

  2.   

    ArrayList是以顺序表的方式存储数据,应该会快些吧
      

  3.   

    LZ您的JDK(1.5以上)支持范形就用北。
      

  4.   

    楼上大多认为第一种效率高些,在另一篇贴中,有个很有说服力的解释,认为是第二种效率高,详见:http://topic.csdn.net/u/20090529/18/db2dbb5c-5087-4b1b-a874-69a7e50d1d56.html?seed=1953411443,有不同观点的,可以去那里发表吧.
    更正:由于当时是随手写的,有点马虎,userList.length应为:getSize(),多谢qusic 的提醒.
      

  5.   

    http://topic.csdn.net/u/20090529/18/db2dbb5c-5087-4b1b-a874-69a7e50d1d56.html?seed=1184534580
    在此链接上我已做了说明
    不同的数据量,第二种方法比第一种方法快多少的问题时不一致的,从数据量由少到多,开始快的不明显,然后逐渐升高,达到一个峰值后下降,当逐渐接近内存极限的时候,突然提高。
    综上所述,第二种效率更高,尤其在内存极限的时候,凸显第二种方法的优势。