【问题标题】:How to sort Arraylist<Hashmap<String,String>>如何排序 Arraylist<Hashmap<String,String>>
【发布时间】:2017-06-01 03:19:27
【问题描述】:

这里我有一个查询,其中我根据条件获取名称和值,我将 empid 和 empname 的值存储在列表中

这是一段代码:

List<String> _empid = new ArrayList<String>();
List<String> _empname = new ArrayList<String>();

在这里我从数据库中获取值:

while (cur1.moveToNext()) {
if (cur1.getString(cur1.getColumnIndex("name"))
        .equalsIgnoreCase("DIS_FIELD_COLLECTION_EXECUTIVE")) {

         _empid.add(cur1.getString(cur1.getColumnIndex("value")));

   } else if (cur1.getString(cur1.getColumnIndex("name"))
                  .equalsIgnoreCase("FIELD_EXECUTIVE_NAME")) {

         _empname.add(cur1.getString(cur1.getColumnIndex("value")));

   }
}

 for (int i = 0; i < _empid.size(); i++) {
          HashMap<String, String> map = new HashMap<String, String>();
          map.put("id", _empid.get(i));
          map.put("name", _empname.get(i));

          Log.e("forloop", _empid.get(i));
          Log.e("forloop", _empname.get(i));

          emp.add(map);
          adp_emp = new Listadapter_emp(emp, Tracker_filter_Activity.this);
                        lst_employee.setAdapter(adp_emp);
}

这里输出是这样来的

01-17 12:16:49.696 29369-29369/com.wp.focus E/forloop: 5
01-17 12:16:49.696 29369-29369/com.wp.focus E/forloop: AZAD NAGAR-TAN001    
01-17 12:16:49.697 29369-29369/com.wp.focus E/forloop: 3
01-17 12:16:49.697 29369-29369/com.wp.focus E/forloop: PURVANG PANDYA-FPP022
01-17 12:16:49.698 29369-29369/com.wp.focus E/forloop: 2
01-17 12:16:49.698 29369-29369/com.wp.focus E/forloop: TWESTT TESST-TTT001    
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: 9
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: SDSDHH XDGHGSDFHGSD-TSX001    
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: 8
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: TEST TEST-TTT002    
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: 6
01-17 12:16:49.699 29369-29369/com.wp.focus E/forloop: AZADALAM NAGAR-TAN002

所需的输出是名称应按字母顺序排序,id 应按名称排列,即 所需的输出如:

AZAD NAGAR-TAN001            5
AZADALAM NAGAR-TAN002        6
PURVANG PANDYA-FPP022        3
SDSDHH XDGHGSDFHGSD-TSX001   9
TEST TEST-TTT002             8
TWESTT TESST-TTT001          2

因此 ID 应该根据排序的名称进行调整,我正在获取名称和 ID 但不是以排序的方式我使用了谷歌的各种示例仍然找不到。如果解决了这个问题,将不胜感激谢谢。

【问题讨论】:

  • Java 是一种面向对象的语言。你应该使用它。使用字段 idname 创建一个 Employee 类。然后创建一个ArrayList&lt;Employee&gt; 并使用list.sort(Comparator.comparing(Employee::getName)) (Java 8) 对其进行排序。或者对于 Java 7,创建一个 EmployeeNameComparator 并使用 Collections.sort(new EmployeeNameComparator()) 进行排序。
  • 好的,先生,这可能对我有帮助..让我试试..谢谢。
  • 如何设置员工,因为我必须从不同的列中获取 id 和 name??
  • 您的回答对我有帮助,非常感谢.... @andreas

标签: java android sorting arraylist hashmap


【解决方案1】:

您可以使用 tree map 以排序方式存储数据。 其次,您可以将 name 与 Id(key) 放在地图中。

如果您仍然想以相同的方式使用 in,那么您可以使用 Collections.sort() 对您的列表进行排序。

【讨论】:

  • 那里有很多例子。使用您最喜欢的搜索引擎。 @Abhi
猜你喜欢
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 2013-07-29
  • 2012-06-18
  • 2011-12-02
相关资源
最近更新 更多