我有两个数组列表,它们的大小相同,分别命名为“ name”和“ path”,分别包含文件的名称和路径(这是通过使用搜索功能读取外部存储而获得的)。
现在,我已经按照不区分大小写的字母顺序对“名称”数组列表进行了排序,但是“路径”数组列表保持不变。
我想在列表视图中使用这些数组列表,但是问题是当我单击列表视图中的任何文件时,并且我们知道只有一个数组“名称”被排序,因此它们没有从中打开正确的文件相应的路径,因为“路径”数组列表仍然包含“名称”列表的旧顺序的路径。
那么,如何使“路径”数组列表与“名称”列表的顺序相同?为了使新名称列表与正确的路径匹配。
如果可能,有人可以通过Teamviewer帮助我吗?我无法在此处发布完整的代码,因为这是我的大学项目,希望大家都能理解。
答案 0 :(得分:0)
我建议您使用TreeMap(它是HashMap的一种类型,从a-z排序),而不要使用2个数组列表。 代码看起来像这样:
private Map<String, String> namePathMap = new TreeMap<String, String>();
现在要添加一个具有以下名称的路径:
namePathMap.put("[name]", "[path]");
这将按键对HashMap进行排序。
如果要通过给定的mame获取路径,则必须编写:
namePathMap.get("[name]");
如果您现在需要遍历名称:
for(String key : namePathMap.keySet()){
String value = namePathMap.get(key);
//Do here what you want
}
如果您对Maps / HashMap有任何疑问,请随时问我^^
希望能对您有所帮助
答案 1 :(得分:0)
在您的示例中,使用name
来获得path
。
这表示key
和value
类型的数据,其中使用key
以获得其对应的value
。
因此,如果您希望对姓名进行排序,我建议您使用ArrayList
,特别是Map
,而不要使用两个单独的数据结构(您的两个TreeMap
) 。 TreeMap
将根据其自然顺序自动对键进行排序。
用法
要实例化TreeMap
:
Map<String, String> nameMap = new TreeMap<>();
要添加name
键和path
值对:
nameMap.put(name, path);
要从path
获取name
:
nameMap.get(path);
有关更多文档,请查看:https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html