gpt4 book ai didi

java - 重写 Android Java 比较器类

转载 作者:行者123 更新时间:2023-12-01 19:02:22 25 4
gpt4 key购买 nike

我有一个基类,其中包含以下行来对我的对象 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/

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