【问题标题】:How to retrieve List object stored in TreeMap?如何检索存储在 TreeMap 中的 List 对象?
【发布时间】:2018-04-11 19:39:54
【问题描述】:

我有一个需要按类别和字母排序的对象列表。我的想法是获取我的 ArrayList,将其转换为 HashMap,以便我可以使用键按类别组织数据,然后创建树形图以自然地按字母顺序排列数据。它有效,我不确定这样做的更好/更有效的方式。我的 TreeMap 具有以下结构:

TreeMap<String, ArrayList<CustomModel>>

如何访问此树形图中的值列表?我知道我可以得到一个特定的值,如果它是一个字符串,例如如下:

for (Map.Entry<String, String> entry : treemap.entrySet()) {
            Log.i(TAG, "key= " + entry.getKey());
            Log.i(TAG, "value= " + entry.getValue());
        }

但是,如果您有一个值列表怎么办?如何检索该列表中的所有内容?看来我需要再次转换。

【问题讨论】:

    标签: android hashmap treemap sortedmap


    【解决方案1】:

    您似乎已经解决了这个问题。 Entry.value() 将返回 ArrayList,而不是 String 类型。尝试枚举它,然后记录每个值

    【讨论】:

    • 你是对的,或多或少。它不返回一个列表,它返回一个对象引用 id。您必须使用 toArray() 来取回列表。我包括了更多细节,但工作似乎已经完成,我完成了我想要完成的事情,即排序和字母排序
    【解决方案2】:

    我得到了答案。有几种方法可以做到这一点。您可以从列表中检索一个对象,也可以检索整个列表对象。

    1) 列表中的对象

    您需要一个密钥才能执行此选项。使用 keySet() 获取密钥

    Object key = treemap.keySet().toArray()[index];
    Object value = treemap.get(key);
    

    2) 整个列表对象

    ArrayList<CustomModel> alCustomModel = (ArrayList<CustomModel>) treemap.values().toArray()[index];
    

    关于此的一些注意事项是,您正在检索每个位置的 CustomModel 列表。使用对您有意义的任何方法。干杯!

    【讨论】:

      猜你喜欢
      • 2015-04-02
      • 2014-02-09
      • 2020-07-13
      • 2014-12-23
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      相关资源
      最近更新 更多