【发布时间】:2016-05-24 10:36:58
【问题描述】:
更新
Multimap<Double, PowerHost> createHostListofAvailableMIPS()
{
List<PowerHost> tempList = hosts;
Multimap<Double, PowerHost> listOfAvailableMIPS = TreeMultimap.create(Ordering.natural(), Ordering.arbitrary());
for (PowerHost p : tempList)
{
//build tree
listOfAvailableMIPS.put(p.getAvailableMips(), p);
}
return listOfAvailableMIPS;
}
PowerHost getHost (Vm vm)
{
this.reqdMIPS = vm.getMips();
Multimap<Double, PowerHost> sortedPHs = createHostListofAvailableMIPS();
PowerHost selectedHost = null;
//gets mips that are >= reqdMIPS ie best matches
NavigableSet<Double> ns = (NavigableSet<Double>) sortedPHs.keySet();
Double x = ns.ceiling(reqdMIPS);
//other codes follow
}
我注意到有一个 .在声明中是
Treemap.<Double, PowerHost>create().keySet().ceiling(K)
我相信这也可以,我回家后会试试这个。但是使用上面的代码:
NavigableSet<Double> ns = (NavigableSet<Double>) sortedPHs.keySet()
只返回一个项目,而不是一组 Doubles
java 中是否有任何内置结构是 Treemap + multimap 的特征集的组合?
我想要的基本上是一个可以支持多个/重复键的 Treemap。我知道多图(来自番石榴)可以做到这一点,但我不能在多图上使用天花板键(K)。
我最初的计划是使用 TreeMultimap,然后使用 keyset().ceiling(k) 但eclipse一直拒绝这些陈述:
Multimap <Double, someObject> myMM= TreeMultimap.create();
抱怨“绑定不匹配”,说 someObject 不是
的有效替代品keyset().ceiling(k) 抱怨 Set 中未定义方法上限。
帮助/建议将不胜感激。
【问题讨论】:
-
1) 应该是
keySet().ceiling(k)(注意大写的“S”)。 2) 我无法重现您的问题,因为TreeMultimap.<Double, Comparable>create().keySet().ceiling(0.0);对我来说编译得很好。您能否提供重现您遇到的问题的实际代码?
标签: guava treemap multimap ceil