在Android中按字母顺序排序哈希映射值的类型



在我的应用程序中,我试图在listView中按字母顺序对Name进行排序。成功地从本地数据库获得了值。我可以知道实现目标的正确方法是什么吗?我没有找到任何合适的解决方案。请帮帮我。

我的代码低于

// Declare this 
ArrayList < HashMap < String, Object >> Results;
ArrayList < HashMap < String, Object >> ValuesSpeciality;
public CustomAdapterSpecialityActivity adapterCustom;

//get speciality list from local db and show on listview
public void SpecialitiesOnList() {
    HashMap < String, Object > temp;
    List < TaxonomyObjects > contacts = db.getAllTaxonomy();
    for (TaxonomyObjects cn: contacts) {
        temp = new HashMap < String, Object > ();
        temp.put("provider", "" + cn.getDisplayName());
        temp.put("tvTaxonomyCode", "" + cn.getTaxonomyCode());
        System.out.println(temp);
        ValuesSpeciality.add(temp);
    }
    //searchResults=originalValuesSpeciality initially
    Results = new ArrayList < HashMap < String, Object >> (ValuesSpeciality);
    adapterCustom = new CustomAdapterSpecialityActivity(this, R.layout.list_item_service, searchResults);
    lv.setAdapter(adapterCustom);
    adapterCustom.notifyDataSetChanged();
    for (int i = 0; i < adapterCustom.getCount(); i++) {
        HashMap < String, Object > hm = (HashMap < String, Object > ) adapterCustom.getItem(i);
        hm.put("position", i);
    }
}

因此,我的Logcat显示此

{Code=204D00000X, provider=Neuromusculoskeletal Medicine & OMM}  
 {Code=204F00000X, provider=Transplant Surgery}
 {Code=204R00000X, provider=Electrodiagnostic Medicine}
 {Code=207K00000X, provider=Allergy & Immunology}
 {Code=204E00000X, provider=Oral & Maxillofacial Surgery}

我试图显示提供者名称Alphabetically顺序。

使用此代码…

private static HashMap sortByValues(HashMap map) { 
       List list = new LinkedList(map.entrySet());
       // Defined Custom Comparator here
       Collections.sort(list, new Comparator() {
            public int compare(Object o1, Object o2) {
               return ((Comparable) ((Map.Entry) (o1)).getValue())
                  .compareTo(((Map.Entry) (o2)).getValue());
            }
       });
       // Here I am copying the sorted list in HashMap
       // using LinkedHashMap to preserve the insertion order
     HashMap sortedHashMap = new LinkedHashMap();
       for (Iterator it = list.iterator(); it.hasNext();) {
              Map.Entry entry = (Map.Entry) it.next();
              sortedHashMap.put(entry.getKey(), entry.getValue());
       } 
       return sortedHashMap;
  }

如果您使用的是本地数据库,那么您可以很容易地在TEXT字段上使用order by,这将给出结果,并使用LinkedHashMap而不是HashMap,您的问题将很容易地得到解决

最新更新