rem*_*oys 3 java android arraylist
我想将单个数组过滤成部分.假设我有一个ArrayList字符串:
Array1 = ["2015-01-06","2015-04-06",
"2016-06-06","2016-01-06",
"2016-05-06","2017-02-06",
"2017-04-06","2017-03-06",
"2015-03-06","2016-04-06",
"2016-02-06","2015-05-06",
"2015-01-06","2016-06-06"]
Run Code Online (Sandbox Code Playgroud)
我希望它根据它们的年份过滤新数组,以便输出看起来像:
arrayA = ["2015-01-06","2015-04-06","2015-03-06","2015-05-06","2015-01-06"]
arrayB = ["2016-06-06","2016-01-06","2016-05-06","2016-04-06","2016-02-06","2016-06-06"]
arrayC = [""2017-02-06","2017-04-06","2017-03-06""]
Run Code Online (Sandbox Code Playgroud)
阵列基于多年.我不知道完成这项任务的正确方法.
Tun*_*aki 10
这个问题被编辑为包含Android标签,因为Android不支持Java 8,因此不适用于OP,我会留下它,以防它有人帮助不使用Android的人.
使用Stream API,您可以轻松构建Map<Integer, List<String>>每个键一年的位置.您可以使用groupingBy(classifier)分类器从日期中提取年份的位置.在这种情况下,日期将被解析,LocalDate.parse但您可以通过提供自己的格式化程序轻松扩展它.
public static void main(String[] args) {
String[] array = {"2015-01-06","2015-04-06",
"2016-06-06","2016-01-06",
"2016-05-06","2017-02-06",
"2017-04-06","2017-03-06",
"2015-03-06","2016-04-06",
"2016-02-06","2015-05-06",
"2015-01-06","2016-06-06"};
Map<Integer, List<String>> map =
Arrays.stream(array)
.collect(Collectors.groupingBy(s -> LocalDate.parse(s).getYear()));
// or a simple s -> Integer.valueOf(s.substring(0, s.indexOf('-'))) in this case
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从该地图访问所需的列表.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |