首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collections.sort

Collections.sort
EN

Stack Overflow用户
提问于 2011-05-04 21:55:09
回答 2查看 1.5K关注 0票数 0

Collections.sort(ResolveInfo.DisplayNameComparator,new function.The (Collections.sort));这是一个排序应用程序第一个参数是一个要排序的数组。为什么我们需要第二个参数?第二个参数能做什么?

EN

回答 2

Stack Overflow用户

发布于 2011-05-04 21:59:47

Sort的第二个参数是Comparable,这样您就可以提供自定义函数来比较对象。

Collections.sort(应用程序,新管理器(ResolveInfo.DisplayNameComparator));

它似乎使用了一个比较器,通过显示名称来比较对象。

票数 3
EN

Stack Overflow用户

发布于 2015-01-29 02:42:06

appsResolveInfo对象的列表。ResolveInfo不是Comparable,这意味着因为它不实现Comparable接口,所以没有关于如何比较两个ResolveInfo对象的“规则”。sort(List<T> list)方法要求列表中的对象具有可比性:

代码语言:javascript
复制
public static <T extends Comparable<? super T>> void sort(List<T> list)

DisplayNameComparator定义了如何通过ResolveInfo对象所代表的应用程序的显示名称来比较这些对象的逻辑。

源代码:

代码语言:javascript
复制
  public static class DisplayNameComparator
        implements Comparator<ResolveInfo> {
    public DisplayNameComparator(PackageManager pm) {
        mPM = pm;
        mCollator.setStrength(Collator.PRIMARY);
    }

    public final int compare(ResolveInfo a, ResolveInfo b) {
        CharSequence  sa = a.loadLabel(mPM);
        if (sa == null) sa = a.activityInfo.name;
        CharSequence  sb = b.loadLabel(mPM);
        if (sb == null) sb = b.activityInfo.name;

        return mCollator.compare(sa.toString(), sb.toString());
    }

    private final Collator   mCollator = Collator.getInstance();
    private PackageManager   mPM;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5884522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档