在 Java中,许多类都是 Iterable ,主要包括所有的 Collection 类(但不包括各种 Maps )。 例如,下面的代码可以显示所有的操作系统环境变量:
// collections/EnvironmentVariables.java
// {VisuallyInspectOutput}
import java.util.*;public class EnvironmentVariables {public static void main(String[] args) {for(Map.Entry entry: System.getenv().entrySet()) {System.out.println(entry.getKey() + ": " +entry.getValue());}}
}
PATH: /Library/Frameworks/Python.framework/Versions/3.8/bin:/Users/chy/Library/apache-maven-3.6.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/chy/Library/tomcat9.27/bin
SHELL: /bin/bash
USER: wangyixuan
TMPDIR: /var/folders/_t/s_5zr51n5kv_qc8rkjn_d84h0000gn/T/
SSH_AUTH_SOCK: /private/tmp/com.apple.launchd.V3hV7RDf03/Listeners
XPC_FLAGS: 0x0
VERSIONER_PYTHON_VERSION: 2.7
__CF_USER_TEXT_ENCODING: 0x1F5:0x19:0x34
LOGNAME: wangyixuan
LC_CTYPE: zh_CN.UTF-8
M3_HOME: /Users/chy/Library/apache-maven-3.6.3
PWD: /Users/chy/Documents/JavaProject/Java8
XPC_SERVICE_NAME: com.jetbrains.intellij.1576
JAVA_MAIN_CLASS_16255: EnvironmentVariables
HOME: /Users/chy
System.getenv()
返回一个 Map , entrySet()
产生一个由 Map.Entry 的元素构成的 Set ,并且这个 Set 是一个 Iterable ,因此它可以用于 for-in 循环。for-in 语句适用于数组或其它任何 Iterable ,但这并不意味着数组肯定也是个 Iterable ,也不会发生任何自动装箱