我有一個問題,我通過調用服務得到一個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