Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何对多个arraylist排序_Android_Sorting_Arraylist - Fatal编程技术网

Android 如何对多个arraylist排序

Android 如何对多个arraylist排序,android,sorting,arraylist,Android,Sorting,Arraylist,我有一个问题,我通过呼叫一个服务得到了一个JSON响应,我得到了姓名、位置、职位、电子邮件、电话号码字段。每个字段都存储在其ArrayList中。我在Listview中显示这些值 现在我必须按排序顺序显示名称,但是其他字段也应该按相应的名称排列 我们可以通过使用Collection.sort(nameArrayList)进行排序,但是其他字段会受到什么影响呢?? 如何有效地做到这一点??有什么想法吗 谢谢。签出,其中包含有关列表视图内容排序的完整说明 此外,您还可以从(注意-未选中)获取源文件。

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

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

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

谢谢。

签出,其中包含有关
列表视图内容排序的完整说明


此外,您还可以从(注意-未选中)获取源文件。

不必将每个字段存储在自己的数组列表中,为什么不创建一个类来表示每个对象,这样类就可以包含名称、位置、位置、电子邮件和电话号码等字段。解析JSON时,创建上述对象的实例,并将其放入ArrayList中。通过实现可比较的接口使对象具有可比较性。。compareTo函数将简单地取消引用输入对象的name对象,并与当前对象进行比较

有关更多信息,请参见此处: 创建一个
hashMapd2)+1:-1;
}
if(isNumber(firstName))
{
返回+1;
}
如果(isNumber(secondName))
{
返回-1;
}
返回o1.getName().compareTo(o2.getName());
}
公共布尔值isNumber(字符串x)
{
如果(x==null)
{
返回false;
}
返回x.matches(“^-?\\d+(\\.\\d+)?$”;
}
}
}

你好,Shailendra,感谢您的回复。我按照你的建议做了同样的事情,效果很好,但有一种情况,当任何两个人的名字相同时,它将只显示一个人的信息,因为在HashMap中,键必须是唯一的。哦,对了。我认为现在您应该使用包含名称和其他值的pojo的ArrayList,现在创建一个Comparator,它可以在此pojo中按名称对元素进行排序。搜索比较器以获取更多想法。你可以使用比较器参考此链接。
map.put(name , pojo) ;
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+)?$");
    }
}
}