Collections.sort(ResolveInfo.DisplayNameComparator,new function.The (Collections.sort));这是一个排序应用程序第一个参数是一个要排序的数组。为什么我们需要第二个参数?第二个参数能做什么?
发布于 2011-05-04 21:59:47
Sort的第二个参数是Comparable,这样您就可以提供自定义函数来比较对象。
Collections.sort(应用程序,新管理器(ResolveInfo.DisplayNameComparator));
它似乎使用了一个比较器,通过显示名称来比较对象。
发布于 2015-01-29 02:42:06
apps是ResolveInfo对象的列表。ResolveInfo不是Comparable,这意味着因为它不实现Comparable接口,所以没有关于如何比较两个ResolveInfo对象的“规则”。sort(List<T> list)方法要求列表中的对象具有可比性:
public static <T extends Comparable<? super T>> void sort(List<T> list)DisplayNameComparator定义了如何通过ResolveInfo对象所代表的应用程序的显示名称来比较这些对象的逻辑。
源代码:
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;
}https://stackoverflow.com/questions/5884522
复制相似问题