如何根据java映射中的最低键值获取值
我的地图是如何根据java映射中的最低键值获取值,java,dictionary,object,java-8,Java,Dictionary,Object,Java 8,我的地图是 Map<Long,Plan> planMap= new HashMap<>(); planMap.put(123,planObject1); planMap.put(345,planObject2); planMap.put(678,planObject3); Map planMap=newhashmap(); planMap.put(123,planObject1); planMap.put(345,planObject2); planMap.put(67
Map<Long,Plan> planMap= new HashMap<>();
planMap.put(123,planObject1);
planMap.put(345,planObject2);
planMap.put(678,planObject3);
Map planMap=newhashmap();
planMap.put(123,planObject1);
planMap.put(345,planObject2);
planMap.put(678,planObject3);
如何基于最低的键值检索计划对象
i、 e:我想用123键检索planObject1(因为它是最低的)
请帮助我们了解可能性
谢谢long minPlan=long.MAX\u值;
for(长键:planMap.keySet()){
if(minPlan
System.out.println(“min is=“+planMap.get(min))代码>SortedMap planMap=newtreemap();
planMap.put(123,planObject1);
planMap.put(345,planObject2);
planMap.put(678,planObject3);
Map.Entry=planMap.firstEntry();
SortedMap可用于范围等。我建议您使用另一种数据结构或实现,因为从HashMap的迭代器()
获取的元素顺序不应受到限制。最简单但效率低下的解决方案是迭代整个entrySet()
并搜索最低的键:
String value = planMap.entrySet().stream()
.min(Entry.comparingByKey()).get().getValue();
这仅在映射
不为空时有效。我建议您在isEmpty()前面加上前缀check
请注意,此操作的运行时复杂性为O(n)
。如果重复执行此操作,可以查看TreeMap
:
TreeMap<Long, String> planMap = new TreeMap<>();
String value = planMap.firstEntry().getValue();
是否有理由不必要自动装箱到long
?@Glains否。我只是更习惯于编写原语。
SortedMap<Long, Plan> planMap = new TreeMap<>();
planMap.put(123, planObject1);
planMap.put(345, planObject2);
planMap.put(678, planObject3);
Map.Entry<Long, Plan> entry = planMap.firstEntry();
String value = planMap.entrySet().stream()
.min(Entry.comparingByKey()).get().getValue();
TreeMap<Long, String> planMap = new TreeMap<>();
String value = planMap.firstEntry().getValue();
Map<Long, String> planMap = new LinkedHashMap<>();
// elements need to be added in correct order and the Map may not
// be modified after elements are inserted to not break
// consistency with the lowest key
planMap.put(123L, "Plan 1");
planMap.put(345L, "Plan 2");
planMap.put(678L, "Plan 3");
String value = planMap.entrySet().iterator().next().getValue();