【问题标题】:What's the equivalent to a .NET SortedDictionary, in Java?Java 中的 .NET SortedDictionary 等价物是什么?
【发布时间】:2011-06-05 00:31:14
【问题描述】:

如果 .NET 有一个 SortedDictionary 对象……请问在 Java 中这是什么?我还需要能够在 Java 代码中检索 Enumeration(元素).. 这样我就可以遍历所有键。

我认为这是 TreeMap ?但我不认为有一个暴露的Enumeration

有什么想法吗?

【问题讨论】:

标签: java .net data-structures enumeration sorteddictionary


【解决方案1】:

TreeMap 将是正确的选择。至于所有键(或值)的集合,任何Map 都会暴露keySet()values()

编辑(用代码标签回答您的问题)。假设你有一个Map<String, Object>

for (String key : map.keySet()) {
     System.out.println(key); // prints the key
     System.out.println( map.get(key) ); // prints the value
}

您还可以使用entrySet() 代替keySet()values() 来遍历键-> 值对。

【讨论】:

    【解决方案2】:

    TreeMap 可能是您能找到的最接近的东西。

    您可以通过调用 TreeMap.keySet(); 并遍历返回的 Set 来遍历键:

    // assume a TreeMap<String, String> called treeMap
    for(String key : treeMap.keySet())
    {
        string value = treeMap[key];
    }
    

    相当于:

    // assume a SortedDictionary called sortedDictionary
    foreach(var key in sortedDictionary.Keys)
    {
        var value = sortedDictionary[key];
    }
    



    您还可以尝试以下方法:
    // assume TreeMap<String, String> called treeMap
    for (Map.Entry<String, String> entry : treeMap.entrySet())
    {
        String key = entry.getKey();
        String value = entry.getValue();
    }
    

    相当于下面的 .NET 代码:

    // assume SortedDictionary<string, string> called sortedDictionary
    foreach(KeyValuePair<string, string> kvp in sortedDictionary)
    {
        var key = kvp.Key;
        var value = kvp.Value;
    }
    

    【讨论】:

    • treeMap[key] 是一种语法糖,您在当前版本的 java 中找不到它。你应该坚持使用 treeMap.get(key)
    【解决方案3】:

    你需要的是SortedMap(TreeMap)的entrySet()方法。

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      相关资源
      最近更新 更多