gpt4 book ai didi

java - 如何在不改变android中的值的情况下按字母顺序对 HashMap 键进行排序?

转载 作者:行者123 更新时间:2023-12-02 02:50:42 24 4
gpt4 key购买 nike

我有一个 HashMap 列表,其中包含联系人姓名作为键,电话号码作为值,如下所示。

   cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

while (cursor.moveToNext()) {

name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

phonenumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//stored_Contacts.add(name);
// phone_number_list.add(phonenumber);


try {
hash_map_list = new ArrayList<HashMap<String, String>>();
map = new HashMap<String, String>();
map.put(name, phonenumber);
hash_map_list.add(map);
} catch (Exception e) {
e.printStackTrace();
}


}
cursor.close();

我需要的是,我想按字母顺序对联系人姓名进行排序,并保留值(电话号码)和联系人姓名。有人可以帮忙吗?

这个功能我试过了,没用。

 private static Map<String, String> sortByComparator(Map<String, String> unsortMap, final boolean order)
{

List<Map.Entry<String, String>> list = new LinkedList<Map.Entry<String, String>>(unsortMap.entrySet());

// Sorting the list based on values
Collections.sort(list, new Comparator<Map.Entry<String, String>>()
{
public int compare(Map.Entry<String, String> o1,
Map.Entry<String, String> o2)
{
if (order)
{
return o1.getValue().compareTo(o2.getValue());
}
else
{
return o2.getValue().compareTo(o1.getValue());

}
}
});

Map<String, String> sortedMap = new LinkedHashMap<String, String>();
for (Map.Entry<String, String> entry : list)
{
sortedMap.put(entry.getKey(), entry.getValue());
}

return sortedMap;
}

最佳答案

HashMap 并不是被设计为排序的数据集。这是为了在存储和检索值时尽可能高效而牺牲的。

另一方面, TreeMap 的设计方式是让您的键始终排序。这看起来是适合您的用例的工具。

关于java - 如何在不改变android中的值的情况下按字母顺序对 HashMap 键进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com