相应地排序两个ArrayList - Android

时间:2014-03-25 07:43:48

标签: android sorting arraylist

我有两个ArrayLists<>即"姓名"和" Ids" ("名称"包含客户名称,而#34; Ids"包含客户ID。两者都通过网络服务填充。我添加"名称"到一个微调器,如果我在微调器中选择任何名称,则会选择相应的Id。

现在我要展示"姓名"在Spinner中排序。但如果我这样做,我将失去相应的" Ids"与名称一样位于同一位置,但由于我更改了" Names"的顺序,因此我无法根据名称获取相应的ID。

我想以这样的方式对它们进行排序:如果位置3处的名称移动到位置10,则其对应的Id(其位于不同的ArrayList<>位置3)也应该移动到位置10。

  ArrayList<String> Id = new ArrayList<String>();
  ArrayList<String> Name = new ArrayList<String>();

请帮助我。

4 个答案:

答案 0 :(得分:1)

你可以创建一个MyClass类

class MyClass{
int Id ;
String Name;
}

然后创建一个数组列表

ArrayList<MyClass> arr = new ArrayList<MyClass>();

并排序创建自定义比较器类

public class CustomComparator implements Comparator<MyClass> {
@Override
public int compare(MyClass o1, MyClass o2) {
    return o1.Name.compareTo(o2.Name);
}

}

您的排序代码就像您写的那样:

Collections.sort(arr, new CustomComparator());

答案 1 :(得分:0)

比较者是更好的选择

     Comparator<HashMap<String, String>> comparator = new Comparator<HashMap<String, String>>() {                                    
        @Override
        public int compare(HashMap<String, String> object1, HashMap<String, String> object2) 
        {       
                return object1.get("Id").compareToIgnoreCase(object2.get("Id"));
        }
};      
Collections.sort(groupData, comparator);

标识&#39;作为哈希排序的关键

答案 2 :(得分:0)

以简单的方式,您可以使用ArrayListHashMap管理它们,如下所示......

  ArrayList<String> Name = new ArrayList<String>();
  Map<String, String> nameIdMap = new HashMap<String, String>();

在HashMap中,keynamevalueid。因此,只要您需要获得与id相对应的name,就可以按如下方式检索...

nameIdMap.get(Name.get(i));

答案 3 :(得分:0)

使用有序的TreeMap:

Map<String, Float> map = new TreeMap<String, String>(yourMap);
It will automatically put entries sorted by keys.