我有一个问题,我通过调用服务得到一个JSON响应,我得到名称,位置,位置,电子邮件,电话号码字段。每个字段都存储在其ArrayList中。我在Listview中显示这些值。如何排序多个arraylist
现在我必须按排序顺序显示名称,但其他字段也应该按相应的名称排列。
我们可以通过使用Collection.sort(nameArrayList)进行排序,但其他字段会受到怎样的影响? 如何以有效的方式做到这一点?任何想法??
谢谢。
我有一个问题,我通过调用服务得到一个JSON响应,我得到名称,位置,位置,电子邮件,电话号码字段。每个字段都存储在其ArrayList中。我在Listview中显示这些值。如何排序多个arraylist
现在我必须按排序顺序显示名称,但其他字段也应该按相应的名称排列。
我们可以通过使用Collection.sort(nameArrayList)进行排序,但其他字段会受到怎样的影响? 如何以有效的方式做到这一点?任何想法??
谢谢。
创建一个hashMap<String name ,pojo values)
; 现在读取每个名称并将相应的值位置,位置,电子邮件,电话号码存储到pojo对象中。
map.put(name , pojo) ;
将所有的值按名称排序图之后
。 无论使用HashMap来填充列表,遍历键和值,并使用它们
当名字被重复
更好地使用ArrayList用自己的比较。 通过这个代码片段以获取更多帮助
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+)?$");
}
}
}
你好Shailendra,谢谢你的回应。我按照你所建议的方式做了同样的工作,但它有效,但是有一种情况,当任何两个人的名字相同时,它将只显示一个信息,因为在HashMap中key必须是唯一的。 – Himanshu 2012-01-06 10:27:44
哦对。我想现在你应该使用包含名称和其他值的pojo的ArrayList,现在创建一个Comparator,它可以在这个Pojo中按名称对元素进行排序。搜索比较器更多的想法。 – 2012-01-07 10:51:45
而不是存储在自己的数组列表中的每个领域,为什么不创建一个类来表示每个对象以使得类将有场姓名,地址,职位,电子邮件和电话号码。在解析JSON时,创建上述对象的一个实例,并将其放入ArrayList中。通过实现一个可比较的接口来使对象Comparable ..您的compareTo函数将简单地取消引用输入对象的名称对象,并与当前对象进行比较。
这里看到更多的信息: http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
看到我的更新答案.. – 2012-01-06 06:51:02
U可以使用比较http://www.javadeveloper.co.in/java-example/java-comparator-example.html 请参考此链接。 – Richa 2012-01-06 05:48:24