- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个方法,它返回一个属性调用源具有最高值的小部件,这工作正常,除非有多个具有相同值的小部件 源的最高值,在这种情况下,它仅返回最后添加的小部件
private Widget getWidgetWithMostSources(List<Widget> Widgets)
{
SortedMap<Integer,Widget> mapOfWidgetsSortedBySources = new TreeMap<Integer, Widget>();
for(Widget next:Widgets)
{
mapOfWidgetsSortedBySources.put(next.getSources().intValue(), next);
}
//Just return the Widget with the highest source value
Widget Widget = mapOfWidgetsSortedBySources.get(mapOfWidgetsSortedBySources.lastKey());
return Widget;
}
所以我尝试使用 Google Guavas TreemultiMap 代替,但我遇到了两个问题,
它不喜欢我构造 TreeMultiMap 时声明的通用变量。 更新 我认为这是因为 Widget 没有实现可比较的,但我无法修改第三方提供的 Widget 类。我只需要排序的键和键的多值,我不需要排序的值,所以也许还有另一个我可以使用的类?
没有lastKey()方法,那么我该如何解决这个问题:
代码:
private List<Widget> getWidgetWithMostSources(List<Widget> Widgets) {
List<Widget> filteredWidgets = new ArrayList<Widget>();
TreeMultimap<Integer, Widget> mapOfWidgetsSortedBySources = TreeMultimap.create();
for (Widget next : Widgets) {
mapOfWidgetsSortedBySources.put(next.getSources().intValue(), next);
}
//Just return the Widget with the highest source linked to the acoustid
Set<Widget> WidgetsWithHighestSources = mapOfWidgetsSortedBySources.get(mapOfWidgetsSortedBySources.keys().lastKey());
filteredWidgets.addAll(WidgetsWithHighestSources);
return filteredWidgets;
}
更新
这可以编译,我认为可以满足我的需求:
TreeMultimap<Integer, Recording> mapOfRecordingsSortedBySources = TreeMultimap.create(Ordering.natural(), Ordering.arbitrary());
最佳答案
第一个问题可以通过 TreeMultimap<Integer, Widget> mapOfWidgetsSortedBySources = TreeMultimap.create(Ordering.natural(), Ordering.allEqual());
解决
解决二次使用asMap()
获取方法NavigableMap
然后调用lastKey()
或者您可以使用lastEntry
并节省您的时间mapOfWidgetsSortedBySources.get
打电话。
结果我们有
private List<Widget> getWidgetWithMostSources(List<Widget> widgets) {
List<Widget> filteredWidgets = new ArrayList<Widget>();
TreeMultimap<Integer, Widget> mapOfWidgetsSortedBySources = TreeMultimap.create(Ordering.natural(), Ordering.allEqual());
for (Widget next : widgets) {
mapOfWidgetsSortedBySources.put(next.getSources().intValue(), next);
}
//Just return the Widget with the highest source linked to the acoustid
Collection<Widget> widgetsWithHighestSources = mapOfWidgetsSortedBySources.asMap().lastEntry().getValue();
filteredWidgets.addAll(widgetsWithHighestSources);
return filteredWidgets;
}
警告使用Ordering.arbitrary()
而不是Ordering.allEqual()
或者更好地使用MultimapBuilder.treeKeys().arrayListValues().build()
而不是TreeMultimap.create(Ordering.natural(), Ordering.allEqual());
关于java - 如何将此 Java 代码从使用 TreeMap 转换为 TreeMultiMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610598/
假设我有一个带有键/值对的 TreeMultimap(来自 Google Guava 库)。如果我有一个键(假设键的类型为 int),我将如何获取该键和最近的键的值? 例如,我的 treemultim
我是 GUAVA 新手,我不知道如何通过个人比较器获取 TreeMultiMap 订单中的第一个值。 我创建了一个像这样的多 TreeMap : TreeMultimap tm = TreeMulti
我无法迭代 treemultimap 中的值。请告诉我这里有什么问题...我想将值打印为自然顺序 a 11 12 a 11 12 b 13 1 2 3 b 13 1 2 3 b 13 1 2 3 b
是否可以从 Google 的 guava 扩展 TreeMultimap 以获得一些奇怪的 ceiling 功能? ceiling(key) 将返回大于给定键的最小键。 (我知道我可以获得一个有序的
有没有人用过TreeMultimap在谷歌 Collection 中?我知道使用 TreeMultimap,它的键和值是按它们的自然顺序或提供的比较器排序的。我想知道是否有一个函数允许用户提供一个键并
我目前正在使用immutables构造具体的物体。我在尝试创建 TreeMultiMap 时遇到问题。 错误:它需要 OrderKey 中的可比项来创建 map ,如何使用不可变值设置比较器来创建 T
我正在尝试实现一些需要对 Quantity> 的值进行排序的东西 map ,例如: 10, Seattle -> 20, LA -> 10} 值不一定不同。我希望能够检索具有最大和最小值的键/值对
我想要重复值+自然顺序+空,哪个集合支持这些功能? 我尝试过Multihashmap和TreeMultimap。 Treemultimap 不允许空值,即使我有键,但它允许... public sta
输出为:顶级 pin 码:{1=[456008, 456600, 456666], 2=[560089], 4=[456098, 567789]} 我希望它们按以下顺序排列:{4=[456098,56
我正在编写一个调度程序,其中创建的事件标记为日期。因此,通过选择日期,将显示标记到该日期的所有事件。我尝试使用 google 的 TreeMultimap 执行此操作,但我意识到并非所有与所选日期相关
我正在尝试修剪 TreeMultimap,并返回相同结构的 TreeMultimap(但已修剪)。例如,我有不同的新闻提供者返回无序新闻。我需要按日期对新闻进行排序,并在按最近日期排序的多图中维护这种
我有一个方法,它返回一个属性调用源具有最高值的小部件,这工作正常,除非有多个具有相同值的小部件 源的最高值,在这种情况下,它仅返回最后添加的小部件 private Widget getWidgetWi
有谁知道如何创建线程安全的 TreeMultimap 实例TreeMultimap.create()? 最佳答案 Guava Multimaps类包含用于创建和修饰 Multimap 的静态方法,类似
我是一名优秀的程序员,十分优秀!