我想将流收集到Map中,其中的键已排序,所以我尝试了:
TreeMap<LocalDate, MenuChart2.Statistics> last3MPerDay =
menuPriceByDayService.findAllOrderByUpdateDate(menu, DateUtils.quarterlyDate(), 92)
.stream()
.sorted(comparing(MenuPriceByDay::getUpdateDate))
.collect(Collectors
.toMap(MenuPriceByDay::getUpdateLocalDate, p -> new MenuChart2().new Statistics( p.getMinPrice().doubleValue(),
但是我遇到了编译错误
Type mismatch: cannot convert from Map<LocalDate,Object> to
TreeMap<LocalDate,MenuChart2.Statistics>
答案 0 :(得分:5)
如果您将数据存储在TreeMap
之类的排序映射中,则无需创建流的.sorted()
版本;收集器会自然地对存储在TreeMap
中的数据进行排序。
您的.collect()
调用必须返回TreeMap
才能将结果分配给TreeMap
,因此Collectors.toMap()
必须接受创建{{1 }}收集器,以允许传播所需的类型。
例如)
TreeMap
结果jshell> String[] data = { "apple", "pear", "orange", "cherry" };
data ==> String[4] { "apple", "pear", "orange", "cherry" }
jshell> var map = Arrays.stream(data)
...> .collect(Collectors.toMap(s -> s,
...> s -> s.length(),
...> (a,b) -> a,
...> TreeMap::new));
map ==> {apple=5, cherry=6, orange=6, pear=4}
显示数据是按键排序的。
答案 1 :(得分:1)
<View style={editProfileStyle.pickerView}>
<Picker
style={{
...Platform.select({
android: {
color: "#000"
}
})
}}
enabled={true}
selectedValue={this.state.Qualification}
onValueChange={this.updateState}
mode="dropdown"
itemStyle={{ height: 80, color: "#000000" }}
>
{this.state.options.map((item, index) => {
return <Picker.Item value={item} key={index} label={item} />;
})}
</Picker>
</View>