有很多程序员,喜欢把高并发、高可用这样的名词挂在嘴边,似乎是,如果不这样,就显得自己没水平,跟不上时代。然而,对于一些基础知识却并不熟练。俗话说,基础不牢,地动山摇。只有掌握了这些基础性东西,才有可能建造起一座真正的“高并发、高可用”的大厦。
对于for循环,Java程序员可能再熟悉不过了。在使用过程中,有一种很常见的场景,就是满足条件之后就退出循环。这样的功能实现起来倒不难,使用break关键字即可搞定,像下面这样:
package com.sample.interview.core.foundation; import java.util.Arrays; import java.util.List; publicclass ForExample { public static void main(String[] args) { List<String> list = Arrays.asList("Tom", "John", "Jack"); for (String str: list){ System.out.println(str); if(str.equals("John")){ break; } } System.out.println("程序运行结束!"); } }上面的程序初始化一个列表,里面包含三个字符串,程序需要实现的功能:遍历这个数组,打印其中的字符串,直到John就退出循环。
实现方法很简单,使用for-each遍历,打印列表中的元素,如果元素的内容为John,则break,它让循环中止,最后一个元素Jack就不会打印出来了。
然而,如果是两重循环,直接使用break有时候可能达不到想要的效果。比如要实现这样的功能:遍历列表中的元素并且打印出来,直到满足以下条件就不再遍历:该字符串包含字符o。
我们假定使用二重循环来实现(当然可能也会有其他更好的办法):
package com.sample.interview.core.foundation; import java.util.Arrays; import java.util.List; publicclass ForExample { public static void main(String[] args) { List<String> list = Arrays.asList("Tom", "John", "Jack"); for (String str: list){ System.out.println(str); char[] chars = str.toCharArray(); for (char c: chars){ if(c=='o'){ break; } } } System.out.println("程序运行结束!"); } }上面程序的实现方式也很简单,首先遍历字符串,然后把字符串转成字符数组,并且遍历这个字符数组,如果字符等于o,那么直接退出循环,我们看看运行结果:
Tom John Jack 程序运行结束!第一个元素Tom这个字符串包含字符o,正常情况下,遍历到这个字符串以后就应该退出整个循环,不应该再把John和Jack打印出来,但上面这个程序却把所有元素都打印出来了。
这是因为break只是退出当前循环,然而,想要退出整个循环,还得使用其他的方法。
那么,要实现上述的功能,应该怎么做呢?请留言打出你的答案!