Android 拆分树形图<;列表<>;,列表<&燃气轮机&燃气轮机;分成两个数组列表

Android 拆分树形图<;列表<>;,列表<&燃气轮机&燃气轮机;分成两个数组列表,android,arraylist,treemap,Android,Arraylist,Treemap,我有两个数组列表: List<String> names = new ArrayList<String>(10); List<Drawable> drawables = new ArrayList<Drawable>(10); 前两个问题 地图现在是否按字典顺序排序?还是我需要做些额外的事情 在对它们进行排序之后,如果它们仍然是,我想将它们再次拆分回List和List。我试着这样做: List<String> sortedNames

我有两个
数组列表

List<String> names = new ArrayList<String>(10);
List<Drawable> drawables = new ArrayList<Drawable>(10);
前两个问题

地图现在是否按字典顺序排序?还是我需要做些额外的事情

在对它们进行排序之后,如果它们仍然是,我想将它们再次拆分回
List
List
。我试着这样做:

List<String> sortedNames = new ArrayList<String>(myMapToSort.keySet());
List sortedNames=new ArrayList(myMapToSort.keySet());
当然,它不起作用,因为
myMapToSort.keySet()
返回一个
Set
,而不是
List
。 而
列表
对于
集合
没有
构造函数

那么,我如何才能做到这一点,以及我误解了什么

感谢您的帮助。提前谢谢

您可以使用SortedSet(或SortedList)对元素进行排序。元素使用其自然顺序进行排序,或通过通常在排序集创建时提供的比较器进行排序

用于将地图拆分为两个列表:

List<String> sortedNames = new ArrayList<String>();
List<Drawable> drawables = new ArrayList<Drawable>();

for (Map.Entry<String, Drawable> entry : map.entrySet())
{
  sortedNames.add(entry.getKey()
  drawables.add(entry.getValue());
}
List sortedNames=new ArrayList();
List drawables=new ArrayList();
对于(Map.Entry:Map.entrySet())
{
sortedNames.add(entry.getKey()
add(entry.getValue());
}

我自己想出来的

关键是创建一个
TreeMap
,其中不是两个列表,而是两个单独的对象:

Map<String, Drawable> myTreeMap = new TreeMap<String, Drawable>;
现在,地图将根据可绘图项自动按词典排序。 这意味着,
名称和可绘图项按字典顺序排序

如果要检索
,并将它们放回单独的
数组列表
,只需键入:

List <String> mySortedNames = new ArrayList<String>(myTreeMap.keySet());
List <Drawables> mySortedDrawables = new ArrayList<Drawables>(myTreeMap.values());
List mySortedNames=newArrayList(myTreeMap.keySet());
List mySorteAddressables=newArrayList(myTreeMap.values());

就是这样。

不起作用我得到了一个
12-25 23:39:06.167:E/AndroidRuntime(12422):java.lang.ClassCastException:java.util.ArrayList不可比性
这不是问题,我以那种方式实现它,因为我认为你忘记了那个细节,而我是实现它的唯一合乎逻辑的方法。但是我自己想出来了,我会把答案贴出来。不过还是要谢谢你的帮助!一定有一个非常嫉妒的用户,他在没有提供潜在改进的情况下否决了一个普通问题!;)
for(int i = 0; i<names.size(); i++) {
        myTreeMap.put(names.get(i), drawables.get(i));
}
List <String> mySortedNames = new ArrayList<String>(myTreeMap.keySet());
List <Drawables> mySortedDrawables = new ArrayList<Drawables>(myTreeMap.values());