我有两个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>();
请帮助我。
答案 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)
以简单的方式,您可以使用ArrayList
和HashMap
管理它们,如下所示......
ArrayList<String> Name = new ArrayList<String>();
Map<String, String> nameIdMap = new HashMap<String, String>();
在HashMap中,key
将name
而value
将id
。因此,只要您需要获得与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.