【问题标题】:For Each Loop with ArrayList对于带有 ArrayList 的每个循环
【发布时间】:2020-02-15 21:43:48
【问题描述】:

在下面的代码中,如何在内部 For Each 循环中,从我们在外部 For Each 循环中创建的 List 类型的变量创建一个 int 类型的变量?然而,如果我们尝试创建这个原始类型 int 的变量,就会出现错误。无法弄清楚我们如何从 userAge 而不是从 userAges 创建一个类型为 int 的 For Each 变量。

   List <List<Integer>> userAges = new ArrayList<List<Integer>>();

    userAges.add(Arrays.asList(51, 48, 21));
    userAges.add(Arrays.asList(33, 51, 19));
    userAges.add(Arrays.asList(39, 47, 58));

    for (List<Integer> userAge : userAges)
    {
        for (int age : userAge)
        {
            System.out.print(age + " ");
        }
        System.out.println();
    }

【问题讨论】:

  • 因为int age : userAge 可以读作“对于userAge 中的每个int age 做...”。它实际上与外部循环相同,其中一个循环遍历所有 List&lt;Integer&gt; userAgeList&lt;List&lt;Integer&gt;&gt; userAges
  • 不确定我是否理解“我们如何正确地从 userAge 创建一个类型为 int 的 For Each 变量,而不是从 userAges”...userAges 是一个包含列表的列表,因此只有一个条目将是 List 类型,而不是 Integer 类型:List&lt;Integer&gt; firstEntry = userAges.get(0)。这有帮助吗?

标签: java loops arraylist foreach nested


【解决方案1】:

Java 会自动拆箱原始包装类到它们的原始等价物,所以给定

List<Integer> userAge; // what the outer loop provides to the inner loop

我们可以这样写:

for (Integer age : userAge)

或:

for (int age : userAge)

更一般地,给定:

Integer integer;

我们可以这样写:

int i = integer;

阅读完整规范here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多