zoukankan      html  css  js  c++  java
  • for循环 && for-each

    Effective Java 第46条for-each循环优先于传统for循环

    问题:

    使用for循环来遍历集合或者是数组可以借助迭代器和索引变量。但是,如果出现循环嵌套的时候很容易引起混乱。

    例如:

      public static void testfor() {
            String Suit[] = {"CLUB","DIAMOND","HEART","SPADE"};
            String Rank[] = {"ACE","DEUCE","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT",
            "NINE","TEN","JACK","QUEEN","KING"};
    
    
            Collection<String> suits = Arrays.asList(Suit);
            Collection<String> ranks = Arrays.asList(Rank);
    
    
            for (Iterator<String> i = suits.iterator();i.hasNext();){
                for (Iterator<String> j = ranks.iterator();j.hasNext();){
                    System.out.println(i.next()+":"+j.next());
                }
            }
        }
    
    
        public static void  main(String arg[]) {
        testfor();
        }
    

      运行程序:

    CLUB:ACE
    DIAMOND:DEUCE
    HEART:THREE
    SPADE:FOUR
    Exception in thread "main" java.util.NoSuchElementException
    	at java.util.AbstractList$Itr.next(AbstractList.java:364)
    	at com.sankuai.ia.demo.web.controller.TESTController.testfor(TESTController.java:73)
    	at com.sankuai.ia.demo.web.controller.TESTController.main(TESTController.java:81)
    NoSuchElementException : 访问越界:因为最外层的迭代器里面已经没有元素了。

    for-each 好处:
     for (String i : suits) {
                for (String j: ranks) {
                    System.out.println(i+":"+j);
                }
            }
    

    使用for-each  可以解决这个问题且代码简洁。且实际上,在某些情况下,比起普通的for循环,for-each 还稍有些性能上的优势,因为它对数组边界值只计算一次。

    Effective Java  第45条将局部变量的作用域最小化

    好严重的警告⚠️:要是局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。

    1、如果变量在使用之前进行声明只会造成混乱

    2、如果你还没有足够的信息来对这一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。

    某些地方无法使用for-each方法:

    1、过滤:需要调用集合的remove方法

    2、转换:取代设定其他元素

    3、平行迭代;并不是嵌套全部遍历那种。





  • 相关阅读:
    Python
    Python
    Python
    Python
    Python
    Python
    Python
    python
    对象
    py常用模块
  • 原文地址:https://www.cnblogs.com/cjn123/p/10778174.html
Copyright © 2011-2022 走看看