android - 如何对多个arraylist进行排序

标签 android sorting arraylist

我有一个问题,我通过调用服务获得了 JSON 响应,我获得了名称、位置、职位、电子邮件、电话号码 字段。每个字段都存储在其 ArrayList 中。我在 Listview 中显示这些值。

现在我必须按排序顺序显示名称,但其他字段也应按相应的名称排列。

我们可以通过使用 Collection.sort(nameArrayList) 进行排序,但是其他字段将如何受到影响? 如何以有效的方式做到这一点?有什么想法吗??

谢谢。

最佳答案

创建一个 hashMap<String name ,pojo values) ; 现在读取每个名称并将相应的值位置、位置、电子邮件、电话号码存储到 pojo 对象中。

map.put(name , pojo) ;

插入所有值后按名称对 map 进行排序。 在任何使用 hashmap 填充 list 的地方,遍历键和值并使用它们

名字重复时

最好将 ArrayList 与您自己的比较器一起使用。 浏览此代码 fragment 以获得更多帮助

public class Main {

    String name = null;

    // 2011-12-11 11:30:20:0
    public static void main(String[] args) {

    ArrayList<Main> main = new ArrayList<Main>();
    main.add(new Main("CRohit"));
    main.add(new Main("DRohit"));
    main.add(new Main("ARohit"));
    main.add(new Main("12349"));
    main.add(new Main("BRohit"));
    main.add(new Main("ZRohit"));
    main.add(new Main("12345"));
    main.add(new Main("FRohit"));
    main.add(new Main("12348"));
    main.add(new Main(null));
    main.add(new Main(null));

    Collections.sort(main, new PojoComparator());
    for(Main m : main)
    {
        System.out.println(m.getName());
    }


    }

    public Main(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }

    class ChildProfileComparator implements Comparator<Main> {



    @Override
    public int compare(Main o1, Main o2) {

        String firstName = o1.getName();
        String secondName = o2.getName();

        if (firstName == null) {
            return +1;
        }
        if (secondName == null) {
            return -1;
        }

        if(isNumber(firstName) && isNumber(secondName))
        {
            double d1 = Double.parseDouble(firstName);
            double d2 = Double.parseDouble(secondName);

            return (d1>d2)?+1:-1;
        }

        if(isNumber(firstName))
        {
            return +1;
        }
        if(isNumber(secondName))
        {
            return -1;
        }
       return o1.getName().compareTo(o2.getName());
    }

    public boolean isNumber(String x)
    {
        if(x == null)
        {
            return false;
        }
        return x.matches("^-?\\d+(\\.\\d+)?$");
    }
}
}

关于android - 如何对多个arraylist进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753819/

相关文章:

android - 任务 ':app:processDebugResources' 执行失败。 aapt执行失败

javascript - TableSorter 不识别数字

java - 如何使用迭代器遍历二维 ArrayList?

java - Spring MVC 列表属性

java - 在数组列表中,添加新变量并将现有值替换为新值

android - ActionBarSherlock 在选项卡导航和 ActionMode 上重叠

java - 使用 Assets 文件夹中的其他应用程序打开 pdf,解决方法

javascript - Android中的Promise,如何实现?

python - 在 Python 中按字母数字顺序对字典(包含在列表中)进行排序

python - 为什么我的排序代码执行时间不一致?