繁体   English   中英

什么将在Java中存储键值列表或在Java中存储C#IDictionary的替代?

[英]What will store a Key-Value list in Java or an alternate of C# IDictionary in Java?

我是java开发的新手,我来自C#.net,正在开发android应用程序。

我正在寻找在Java中使用的Key-Value列表,与C#中的IDictionary相同。

谢谢

例如,使用Map<K, V>接口HashMap<K, V> 或者,请参阅Map<K, V>接口说明中的“所有已知子接口”部分以获取更多实现。

http://download.oracle.com/javase/6/docs/api/java/util/Map.html

您正在寻找的界面是Map<K, V>

对于类似于C#的Dictionary尝试HashMap<K, V>

我通常更喜欢java.util.TreeMap到HashMap。 它不是那么快,但您不必担心散列算法或设置大小。 更重要的是,它内存友好,因为它使用小块内存而不是分配大量数组。 如果您可以严密控制地图的创建和处理,请事先知道它们将保留多少数据,并且知道在程序运行时条目数量不会发生显着变化,请使用Hashmap。 否则使用Treemap。

另一个非常酷的Map,我还没有遇到过像.NET这样的版本,它是java.util.concurrent.ConcurrentSkipListMap 这对于多线程情况非常有用。 它完全是线程安全的并且是非阻塞的。

(我发现这个问题的同时看一个被关闭的副本。我认为这两个问题都可以使用提到HashMaps之外的其他问题的答案,好像HashMaps用于大多数用途类似于C#字典。)

您正在寻找C#中通用IDictionary的替代方法,它采用(键,值)对。

在Java中,有一个Dictionary类,它是任何类的父类,它接受(键,值)对。

HashTable (扩展词典)将满足您的需求。 它执行复制,删除,添加等操作,检查项目是否存在等。 但是,虽然IDictionary支持C#中的foreach循环,但要在Java中循环HashTable,您将需要一个Iterator。

HashTables的另一个优点是它是同步的,因此您不必担心并发性。

但是,如果您正在寻找异步实现,则应使用HashMap HashMap也需要Iterator遍历它。

毫无疑问,您还需要了解Iterator如何在Java中工作。


HashTables: http//download.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html

HashMaps: http//download.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html

迭代器: http//download.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM