创建从开始到结束的年份范围。

Cod*_*kie 5 java

我正在寻找最简单的方法来创建年份范围,我可以将其放入以起始年份开始并以结束年份结束的列表中。

例子

String fromYear = "2010"
String toYear = "2014"
Run Code Online (Sandbox Code Playgroud)

期望创建一个年份列表["2010","2011","2012","2013","2014"]

不,我知道我需要将字符串转换为整数

Integer from = fromYear != null ? Integer.parseInt(fromYear) : null;
Integer to = toYear != null ? Integer.parseInt(toYear) : null;
Run Code Online (Sandbox Code Playgroud)

从那里我迷失了完成此任务的最有效方法。

spa*_*ead 5

这是新的 Java 8 流 API 的样子。我假设不存在任何一年都可以的用例null,因此如果其中一个是:

String fromYear = "2010" ;
String toYear = "2014" ;

List<Integer> years =
        IntStream.rangeClosed
                (Integer.parseInt(Objects.requireNonNull(fromYear)),
                 Integer.parseInt(Objects.requireNonNull(toYear)))
        .boxed()
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

步骤大致对应于: 确保fromYeartoYear都是非null,否则抛出异常;将fromYear和转换toYear为整数;int创建以 开头fromYear和结尾的值流toYear;将它们转换为Integer实例(即boxed());并将它们打包为一个列表。


b1n*_*phy 3

接受String参数、转换并返回Integer列表:

public static List<Integer> range(String startYear, String endYear) {
    int cur = Integer.parseInt(startYear);
    int stop = Integer.parseInt(endYear);
    List<Integer> list = new ArrayList<Integer>();
    while (cur <= stop) {
        list.add(cur++);
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

或者如果您需要返回String列表:

public static List<String> range(String startYear, String endYear) {
    int cur = Integer.parseInt(startYear);
    int stop = Integer.parseInt(endYear);
    List<String> list = new ArrayList<String>();
    while (cur <= stop) {
        list.add(String.valueOf(cur++));
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)