java collection 创建_java – 如何从Iterable / Collection创建TreeMultimap?

我正在修剪一个TreeMultimap,并且返回相同的结构化TreeMultimap(但是修剪).例如,我有不同的消息提供者返回无序的消息.我需要按日期对消息进行排序,并按照最近的日期在排序的多图中保持排序.那么我需要能够返回最新的X消息.按日期,可能有很多消息.

TreeMultimap latestNews = TreeMultimap.create(Ordering.natural().reverse(),Ordering.natural());

因为TreeMultimap没有修剪或大小,我已经设法返回一个Iterable并限制结果,但是如何从Iterable创建一个新的TreeMultimap?

基本上,这个想法是:

>创建新的排序TreeMultimap

>放入尽可能多的条目(可用)

>修剪到X并返回地图

另外,如果我想要实现类似功能的分页,那么不同的数据集呢?

以下是返回最近5条消息的例子

Map.Entry lastFiveNews = Iterables.limit(latestNews.entries(),5)

但是如何从结果中创建一个新的Multimap?

最简单的方法就像迭代和创建一个新的TreeMultimap一样简单:

TreeMultimap lastFiveNews = TreeMultimap.create(Ordering.natural().reverse(),Ordering.natural());

for (Map.Entry dateStringEntry : Iterables.limit(latestNews.entries(),5)) {

lastFiveNews.put(dateStringEntry.getKey(),dateStringEntry.getValue());

}

latestNews.clear();

latestNews.putAll(lastFiveNews);

我想知道是否有一个实际的类/构造函数可以直接做到这一点.这种使用Iterables的方法是我唯一能想到的.也可能有其他方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值