如何对Android中的HashMap<String,ArrayList>进行排序?
How to sort HashMap<String,ArrayList> in Android?
如何排序HashMap<String,ArrrayList<String>>
?
我正在从 phone 个联系人中获取联系人姓名,例如:
"String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));"
并存入一个HashMap<String,ArrayList<String>>
。但是我得到的所有联系人都是未排序的。
我可以知道如何按字母顺序对这些联系人进行排序,以便我可以按排序顺序显示列表视图吗?
您可以从已经排序的数据库中检索数据。只需使用
String orderBy = ContactsContract.Contacts.DISPLAY_NAME + " DESC";
在您的查询中。之后,通常当你需要使用HashMap 并且已经对数据进行排序时,那么你使用HashMap
+ ArrayList
。在 HashMap 中你保留普通的键值对,在 ArrayList
中你保留排序后的值(如果你已经排序过的数据,你在阅读时将它添加到 ArrayList
中,你不需要再次排序).
如果你需要对你的HashMap中的值ArrayList进行排序,你可以使用:
Collections.sort(yourArrayList);
使用下面的 class 并将数据列表传递给它。它会给你新的排序列表。
public class CompareApp implements Comparator<AppDetails> {
private List<AppDetails> apps = new ArrayList<AppDetails>();
Context context;
public CompareApp(String str,List<AppDetails> apps, Context context) {
this.apps = apps;
this.context = context;
Collections.sort(this.apps, this);
}
@Override
public int compare(AppDetails lhs, AppDetails rhs) {
// TODO Auto-generated method stub
return lhs.label.toUpperCase().compareTo(rhs.label.toUpperCase());
}
}
我使用以下代码按字符串名称的升序获取联系人,如下所示:
public void getAllContacts(ContentResolver cr) {
Cursor phones = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, Phone.DISPLAY_NAME + " ASC");
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
name1.add(name);
phno1.add(phoneNumber);
}
phones.close();
}
希望这是你需要的。
如何排序HashMap<String,ArrrayList<String>>
?
我正在从 phone 个联系人中获取联系人姓名,例如:
"String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));"
并存入一个HashMap<String,ArrayList<String>>
。但是我得到的所有联系人都是未排序的。
我可以知道如何按字母顺序对这些联系人进行排序,以便我可以按排序顺序显示列表视图吗?
您可以从已经排序的数据库中检索数据。只需使用
String orderBy = ContactsContract.Contacts.DISPLAY_NAME + " DESC";
在您的查询中。之后,通常当你需要使用HashMap 并且已经对数据进行排序时,那么你使用HashMap
+ ArrayList
。在 HashMap 中你保留普通的键值对,在 ArrayList
中你保留排序后的值(如果你已经排序过的数据,你在阅读时将它添加到 ArrayList
中,你不需要再次排序).
如果你需要对你的HashMap中的值ArrayList进行排序,你可以使用:
Collections.sort(yourArrayList);
使用下面的 class 并将数据列表传递给它。它会给你新的排序列表。
public class CompareApp implements Comparator<AppDetails> {
private List<AppDetails> apps = new ArrayList<AppDetails>();
Context context;
public CompareApp(String str,List<AppDetails> apps, Context context) {
this.apps = apps;
this.context = context;
Collections.sort(this.apps, this);
}
@Override
public int compare(AppDetails lhs, AppDetails rhs) {
// TODO Auto-generated method stub
return lhs.label.toUpperCase().compareTo(rhs.label.toUpperCase());
}
}
我使用以下代码按字符串名称的升序获取联系人,如下所示:
public void getAllContacts(ContentResolver cr) {
Cursor phones = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, Phone.DISPLAY_NAME + " ASC");
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
name1.add(name);
phno1.add(phoneNumber);
}
phones.close();
}
希望这是你需要的。