我有一个名为md的对象列表。每个对象都有一个activityName,一个startTime和一个endTime(用于活动)。 我想迭代这个列表,并为每个活动,获取startTime和endTime。
Map<String,Long> m1 = new HashMap<String,Long>();
m1 = md
.stream()
.map(s->s.activityName)
.collect(HashMap<String,Long>::new,
(map,string)->{
String d1 = md.get(md.indexOf(string)).startTime;
String d2 = md.get(md.indexOf(string)).endTime;
.
.
.
},HashMap<String,Long>::putAll);
当我尝试获取字符串String d1 = md.get(md.indexOf(string)).startTime;
有没有其他方法可以使用Lambda表达式简化代码?
如果我有两个同名活动(以前喝酒)会怎么样?它只会返回它找到的第一个饮酒活动的索引吗?
答案 0 :(得分:1)
你似乎错过了这样一个事实:
$User1
您的信息流已成为md.stream().map(s -> s.activityName)
;而你的md仍然是Stream<String>
在地图操作中,您试图在List<YourObject>
内找到String
,这显然不存在,因此md
。
因此,您需要-1
<{1}}
Map<String, Long>
现在解析取决于您使用的日期。