JAVA:返回一个AbstractList,它被填充,但在循环时看不到,从未见过这样的编程风格

doinxwow  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(120)

这是leetcode中FizzBuzz程序的最快解决方案(问题412)。我不能理解它的执行路线和程序中实际发生的事情。请帮我解释一下程序的执行路线。告诉我循环发生在哪里。

import java.util.AbstractList;

class Solution {
    public List<String> fizzBuzz(int n) {
        return new AbstractList<>() {
            @Override
            public String get(int i) {
                i++;
                if(i%15==0)
                    return "FizzBuzz";
                if(i%3==0)
                    return "Fizz";
                if(i%5==0)
                    return "Buzz";
                return i+"";
            }
            @Override
            public int size() {
                return n;
            }
        };
    }
}
0sgqnhkj

0sgqnhkj1#

实际上没有循环。
它们创建一个覆盖方法的列表。方法size返回给定的n值。方法get返回一个依赖于给定i值的字符串。因此,这意味着它们不将值存储在列表中-它们只是在给定索引上计算value(“FizzBuzz”/“Fizz”/“Buzz”)

相关问题