gpt4 book ai didi

java - SortedMultiset 返回对象集合(不仅仅是对象计数)?

转载 作者:行者123 更新时间:2023-11-30 04:30:47 25 4
gpt4 key购买 nike

我想整理一组Events其中有一个独特的 id和一个 time 。我想高效地查询 Events在特定的时间范围内。一些Events可能有相同的 time但不同id .

一些Events可能有相同的 time ,所以 Guava TreeMultiSet类(class)非常接近我的需要。

但是,请考虑以下伪代码片段:

class Event
{
Object id;
long time;
}

TreeMultiSet<Event> s = TreeMultiSet.create( new Comparator<Event>( )
{
@Override
public int compare( Event o1, Event o2 )
{
if ( o1.time < o2.time )
{
return -1;
}
else if ( o1.time > o2.time )
{
return 1;
}
else
{
return 0;
}
}
});

s.add( new Event( "a", 0 ) );
s.add( new Event( "b", 0 ) );
s.add( new Event( "c", 0 ) );

添加三项后,TreeMultiSet将只包含“a”Event 3次因为TreeMultiSet只考虑Comparator和三个 Event对象具有相同的 time .

我的第一个想法是合并 id作为我的 Comparator 的一部分实现区分 Events与相同的time ,但是我的ids没有自然顺序(它们只是 Objects 并且不一定实现 Comparable )。

在制作subSet()时这也会很尴尬。 , headSet()等等...查询 - 我不想要 id Event的我用它来设置重要的查询边界的对象。

我可以从头开始实现一些自定义的东西(或者,更有可能的是,将繁重的工作委托(delegate)给一些底层集合),但我想确保已经没有我遗漏的东西。

最佳答案

听起来您真正想要的是 TreeMultimap,尽管它目前不支持您想要的子多 map View 。不过,这可能会改变。也就是说,它的 asMap 方法返回一个完整的 NavigableMap。

关于java - SortedMultiset 返回对象集合(不仅仅是对象计数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com