作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基类,其中包含以下行来对我的对象 ArrayList 进行排序:
Collections.sort(objects, SortObjectList);
它还包括以下类定义来定义排序:
private class SortObjectList implements Comparator<T>
{
public int compare(T lhs, T rhs)
{
return lhs.name.compareToIgnoreCase(rhs.name);
}
}
为了允许派生类使用不同的标准进行排序,我实现了以下内容:
Collections.sort(objects, getSortObjectClass());
和
public Comparator<T> getSortObjectClass() {
return new SortObjectList();
}
private class SortObjectList implements Comparator<T>
{
public int compare(T lhs, T rhs)
{
return lhs.name.compareToIgnoreCase(rhs.name);
}
}
然后我重写派生类中的排序,如下所示:
@Override
public Comparator<MyDataClass> getSortObjectClass() {
return new SortObjectList();
}
private class SortObjectList implements Comparator<MyDataClass>
{
public int compare(MyDataClasslhs, MyDataClassrhs)
{
return lhs.seqNo - rhs.seqNo;
}
}
按 seqNo 而不是名称排序。
它可以工作,但看起来有点笨拙。有谁知道更优雅的解决方案吗?
最佳答案
那么,您可以使用匿名内部类使其稍微更加紧凑:
@Override
public Comparator<MyDataClass> getSortObjectClass() {
return new Comparator<MyDataClass> {
@Override
public int compare(MyDataClass lhs, MyDataClass rhs) {
return lhs.seqNo - rhs.seqNo;
}
};
}
但这与 Java 中的紧凑程度差不多。
(顺便说一下,请注意,上面的比较会在溢出时给出错误的结果。)
关于java - 重写 Android Java 比较器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754244/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!