java – 如何从Iterable / Collection创建TreeMultimap?
发布时间:2020-12-15 00:26:24 所属栏目:Java 来源:网络整理
导读:我正在修剪一个TreeMultimap,并且返回相同的结构化TreeMultimap(但是修剪).例如,我有不同的消息提供者返回无序的消息.我需要按日期对消息进行排序,并按照最近的日期在排序的多图中保持排序.那么我需要能够返回最新的X消息.按日期,可能有很多消息. TreeMultim
我正在修剪一个TreeMultimap,并且返回相同的结构化TreeMultimap(但是修剪).例如,我有不同的消息提供者返回无序的消息.我需要按日期对消息进行排序,并按照最近的日期在排序的多图中保持排序.那么我需要能够返回最新的X消息.按日期,可能有很多消息.
TreeMultimap<Date,String> latestNews = TreeMultimap.create(Ordering.natural().reverse(),Ordering.natural()); 因为TreeMultimap没有修剪或大小,我已经设法返回一个Iterable并限制结果,但是如何从Iterable创建一个新的TreeMultimap? 基本上,这个想法是: >创建新的排序TreeMultimap 另外,如果我想要实现类似功能的分页,那么不同的数据集呢? 以下是返回最近5条消息的例子 Map.Entry<Date,String> lastFiveNews = Iterables.limit(latestNews.entries(),5) 但是如何从结果中创建一个新的Multimap? 最简单的方法就像迭代和创建一个新的TreeMultimap一样简单: TreeMultimap<Date,String> lastFiveNews = TreeMultimap.create(Ordering.natural().reverse(),Ordering.natural()); for (Map.Entry<Date,String> dateStringEntry : Iterables.limit(latestNews.entries(),5)) { lastFiveNews.put(dateStringEntry.getKey(),dateStringEntry.getValue()); } latestNews.clear(); latestNews.putAll(lastFiveNews); 我想知道是否有一个实际的类/构造函数可以直接做到这一点.这种使用Iterables的方法是我唯一能想到的.也可能有其他方法. 解决方法
你已经在做的事情正是你应该做的.
您可能对https://code.google.com/p/guava-libraries/issues/detail?id=320的讨论感兴趣,这是相关的. (这实际上似乎是这些方法的实际有效用例.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |