java吧 关注:1,251,633贴子:12,738,586
  • 18回复贴,共1

Java 每日一题:2016年7月24日

只看楼主收藏回复

每天在这里贴一道 Java 题。
问题不难,有 Java 的基本知识就可以做出来。
问题也不偏,日常工作中时不时会碰到。
每日一题索引页:52.36.153.52:8080/javaquestions/

main 方法中有两个 for-each循环。哪个循环效率更高?


1楼2016-07-25 12:49回复
    源程序:
    package javaquestions;
    import java.util.ArrayList;
    import java.util.List;
    public class JavaQuestion20160725
    {
    public static void main(String[] args)
    {
    for (Integer i : getNumbers()) // 1
    {
    System.out.print(i + " ");
    }
    System.out.println();
    List<Integer> list = getNumbers();
    for (Integer i : list) // 2
    {
    System.out.print(i + " ");
    }
    }
    public static List<Integer> getNumbers()
    {
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 0; i < 100; i++)
    {
    list.add(i);
    }
    return list;
    }
    }


    2楼2016-07-25 12:51
    回复
      这两种写法效率都一样。
      两种写法里,getNumbers 方法都是只运行一次。
      for-each 循环实际上是 Iterator 的一种简化形式,和下面的语句是等效的:
      for (Iterator<Integer> iter = getNumbers().iterator(); iter.hasNext();)
      {
      System.out.println(iter.next());
      }
      虽说从效率上看,两种写法都一样。但从变量的作用域来看,第一种写法要好一些。第一种写法中,getNumbers 方法返回的 List 只是在循环体内部使用。第二种写法在循环体外定义了一个 List,这样造成的后果是循环执行完了以后这个 List 变量还存在,也就是说变量的作用域扩大了。写程序时,变量的作用域应该越小越好。


      3楼2016-07-26 11:32
      回复
        给力


        来自Android客户端4楼2016-07-26 12:07
        回复
          赞一个


          IP属地:广东来自Android客户端5楼2016-07-26 13:27
          回复
            如果你的getNumbers()方法不是静态的,请分析两个foreach循环的效率


            IP属地:江苏6楼2016-07-26 16:47
            收起回复


              IP属地:北京来自iPhone客户端7楼2016-07-26 19:13
              回复
                赞一个!


                9楼2016-07-26 22:20
                回复
                  肯定是遍历的更好辣,这还用提,能不能不出小学生题


                  来自iPhone客户端10楼2016-07-26 22:48
                  回复
                    你确定这些东西在工作中会出现?


                    11楼2016-07-26 22:56
                    收起回复
                      给力。楼主。多更新


                      来自Android客户端12楼2016-07-26 23:29
                      回复
                        我也问楼主一个题,请问遍历ArrayList时,普通for循环和for-each循环哪个效率更高?


                        IP属地:河南13楼2016-07-29 13:40
                        收起回复
                          先收藏了


                          IP属地:河北来自Android客户端14楼2016-07-29 22:46
                          回复