如何解决将Map中的List <integer>转换为Range <integer>
map.of.list={\
{'2','4'} : '1',\
{'4','6'} : '2',\
{'6','8'} : '3' \
}
@Value("#{${map.of.list}}")
private Map<List<Integer>,Integer> integerMap;
如何将其转换为Map<Range<Integer>,Integer> rangesMap
?
Range
的类型为org.springframework.data.domain.Range
。
解决方法
使用此设置:
// Sample input
Map<List<Integer>,Integer> input = new HashMap<>();
input.put(List.of(1,3),5);
input.put(List.of(4,7),8);
// Map to hold the result
Map<Range<Integer>,Integer> result = new HashMap<>();
您可以使用...
传统的for
循环
// Code to convert
for (Map.Entry<List<Integer>,Integer> entry : input.entrySet()) {
// Convert list key to Range
List<Integer> key = entry.getKey();
int from = key.get(0);
int to = key.get(1);
Range range = Range.rightOpen(from,to);
Integer value = entry.getValue();
result.put(range,value);
}
使用entrySet
和toMap
Map<Range<Integer>,Integer> result = input.entrySet()
.stream()
.collect(Collectors.toMap(
e -> Range.rightOpen(e.getKey().get(0),e.getKey().get(1)),Map.Entry::getValue
));
按照misnormer42的建议使用forEach
Map<Range<Integer>,Integer> result = new HashMap<>();
input.forEach((keys,values) -> {
Range<Integer> integerRange = Range.rightOpen(keys.get(0),keys.get(1));
ranges.put(integerRange,values);
});
return result;
,
我可以建议通过以下方式解决此问题:
public final class ConversionUtils {
private ConversionUtils() {
}
public static Map<Range<Integer>,Integer> convertTo(Map<List<Integer>,Integer> fromProperties) {
Map<Range<Integer>,Integer> result= new HashMap<>();
fromProperties.forEach((keys,values) -> {
Range<Integer> integerRange = Range.rightOpen(keys.get(0),keys.get(1));
ranges.put(integerRange,values);
});
return result;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。