Java 中的 .NET SortedDictionary 等价物是啥?

Posted

技术标签:

【中文标题】Java 中的 .NET SortedDictionary 等价物是啥?【英文标题】: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

有什么想法吗?

【问题讨论】:

如何遍历 TreeMap ***.com/questions/1318980/… 【参考方案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()方法。

【讨论】:

以上是关于Java 中的 .NET SortedDictionary 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Android AsyncTask 中的 java.net.SocketException

如何解决 java.net.SocketException:使用 selenium 的 java 中的连接重置异常?

线程“主”java.net.ConnectException 中的异常:连接被拒绝:套接字编程 Java 中的线程

java枚举与.net中的枚举区别

C#:.NET 2.0 框架中的 Java 错误

Java 中的 .NET SortedDictionary 等价物是啥?