作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为 Java 的 TreeSet 函数创建了一个比较器类,我希望用它来排序消息。该类如下所示
public class MessageSentTimestampComparer
{
/// <summary>
/// IComparer implementation that compares the epoch SentTimestamp and MessageId
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public int compare(Message x, Message y)
{
String sentTimestampx = x.getAttributes().get("SentTimestamp");
String sentTimestampy = y.getAttributes().get("SentTimestamp");
if((sentTimestampx == null) | (sentTimestampy == null))
{
throw new NullPointerException("Unable to compare Messages " +
"because one of the messages did not have a SentTimestamp" +
" Attribute");
}
Long epochx = Long.valueOf(sentTimestampx);
Long epochy = Long.valueOf(sentTimestampy);
int result = epochx.compareTo(epochy);
if (result != 0)
{
return result;
}
else
{
// same SentTimestamp so use the messageId for comparison
return x.getMessageId().compareTo(y.getMessageId());
}
}
}
但是当我尝试使用此类作为比较器时,Eclipse 会给出错误并告诉我删除该调用。我一直在尝试使用这样的类
private SortedSet<Message> _set = new TreeSet<Message>(new MessageSentTimestampComparer());
我还尝试将 MessageSentTimestampComparer 扩展为比较器,但没有成功。有人可以解释一下我做错了什么吗?
最佳答案
您的 MessageSentTimestampComparer
未实现 Comparator
。试试这个:
public class MessageSentTimestampComparer implements Comparator<Message> {
@Override
public int compare(Message x, Message y) {
return 0; // do your comparison
}
}
关于java - 为 Java TreeSet 创建比较器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030347/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!