我正在寻找最简单的方法来创建年份范围,我可以将其放入以起始年份开始并以结束年份结束的列表中。
例子
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)
从那里我迷失了完成此任务的最有效方法。
这是新的 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)
步骤大致对应于: 确保fromYear和toYear都是非null,否则抛出异常;将fromYear和转换toYear为整数;int创建以 开头fromYear和结尾的值流toYear;将它们转换为Integer实例(即boxed());并将它们打包为一个列表。
接受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)
| 归档时间: |
|
| 查看次数: |
3126 次 |
| 最近记录: |