按字母顺序对列表进行排序

3

我正在开发一个应用程序,在其中创建一个已安装应用程序列表并允许用户选择其中一个。除了一个问题之外,我已经把所有东西都搞定了;就是按字母顺序排列它们。这是我正在使用的代码:

private List<App> loadInstalledApps(boolean includeSysApps) {
  List<App> apps = new ArrayList<App>();

  PackageManager packageManager = getPackageManager();

  List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

  for(int i=0; i < packs.size(); i++) {
     PackageInfo p = packs.get(i);

     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");
     apps.add(app);
  }

  return apps;

}

非常感谢您的帮助!

4个回答

11

使用Comparator来排序数据...

Collections.sort(apps, new Comparator<App>() {

                @Override
                public int compare(App lhs, App rhs) {
                         //here getTitle() method return app name...
                    return lhs.getTitle().compareTo(rhs.getTitle());

                }
            });

我尝试将这段代码复制粘贴到“return apps;”之前,但没有起作用。Eclipse建议我删除@Override标记。我该如何向此方法提供lhs和rhs或是否有其他原因导致其无法正常工作? - SweSnow
谢谢,我之前尝试过这个方法,但由于编译器问题没有成功。再次感谢您的帮助! - SweSnow
完美运作! - EZDsIt

2

首先:创建比较器

公共类 App 实现 Comparable 接口 {

// Lista de atributos y métodos

public int compareTo(Object o) {
    // logic of comparation
    return result; //must be integer
}

例如:

public int compareTo(Object o) {
        Direccion dir = (Direccion)o;
        if(this.name < app.getName())
            return -1;
        else if(this.name == app.getName())
            return 0;
        else
            return 1;
}

当你想要进行排序时,使用 Collections.short(list)


0
在 Kotlin 中,使用 lambda 表达式和比较器,你可以轻松地按字母顺序对列表进行排序。
yourList.sortWith(Comparator { obj1, obj2 ->

 obj1.name.compareTo(obj2?.name!!, ignoreCase = true)

 })

注意:这里的obj1和obj2是您列表中的模型对象。例如:

val yourList: MutableList<Model> = ArrayList()

0

最简单的解决方案

Collections.sort(familleList, (famille, t1) -> famille.compareTo(t1));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接