loc*_*ock 17 java data-structures
我一直在使用HashMaps,因为我在Java中再次开始编程而没有真正理解这些Collections的东西.
老实说,我不确定是否一直使用HashMaps最适合我或生产代码.到目前为止,只要我能够以我在PHP中调用它的方式获取我需要的数据,这对我来说无关紧要(是的,我承认你现在正在考虑的任何负面的事情)哪里$this_is_array['this_is_a_string_index']提供了如此多的方便召回一组变量.
所以现在,我已经使用java超过3个月了,并且遇到了我在上面指定的接口,并且想知道,为什么有这么多东西(更不用说,矢量,abstractList {哦,列表继续... })?
我的意思是他们彼此之间有什么不同?
更重要的是,在我的案例中使用的最佳界面是什么?
Bar*_*ers 44
API很清楚它们之间的差异和/或关系:
集合层次结构中的根接口.集合表示一组对象,称为其元素.有些集合允许重复元素而其他集合则不允许.有些是订购的,有些是无序的.
http://download.oracle.com/javase/6/docs/api/java/util/Collection.html
有序集合(也称为序列).该接口的用户可以精确控制列表中每个元素的插入位置.用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素.
http://download.oracle.com/javase/6/docs/api/java/util/List.html
不包含重复元素的集合.更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素.正如其名称所暗示的,该界面模拟数学集抽象.
http://download.oracle.com/javase/6/docs/api/java/util/Set.html
将键映射到值的对象.地图不能包含重复的键; 每个键最多可以映射一个值.
http://download.oracle.com/javase/6/docs/api/java/util/Map.html
有什么特别的东西让你对上述内容感到困惑吗?如果是,请编辑原始问题.谢谢.
MAK*_*MAK 11
常见Java集合的简短摘要:
'Map':'Map'是一个允许存储key => value对的容器.这使得使用密钥快速搜索以获得其关联值.java.util包中有两个实现,'HashMap'和'TreeMap'.前者实现为hastable,而后者实现为平衡二叉搜索树(因此也具有对键进行排序的属性).
'Set':'Set'是一个只包含唯一元素的容器.多次插入相同的值仍然会导致"Set"仅保存一个实例.它还提供快速操作来搜索,删除,添加,合并和计算两组的交集.像'Map'一样,它有两个实现,'HashSet'和'TreeSet'.
'List':'List'接口由'Vector','ArrayList'和'LinkedList'类实现."列表"基本上是保留其相对顺序的元素集合.您可以向其添加/删除元素,并访问任何给定位置的各个元素.与"地图"不同,"列表"项目由int索引,即它们的位置是"列表"(第一个元素位于第0位,最后一个位于"List.size()" - 1).'Vector'和'ArrayList'是使用数组实现的,而'LinkedList',顾名思义,使用链表.需要注意的一点是,不像php的关联数组(更像是一个Map),Java中的数组和许多其他语言实际上代表了一个连续的内存块.阵列中的元件基本上并排布置在相邻的"槽"上,可以这么说.这提供了非常快的查找和写入时间,比使用更复杂的数据结构实现的关联数组快得多.但是,与关联数组不同,除了数组中的数值位置之外,它们不能被任何其他索引编入索引.
为了更好地了解每个集合的优点及其性能特征,我建议您对数据结构(如数组,链表,二叉搜索树,哈希表以及堆栈和队列)有一个很好的了解.如果你想成为任何语言的有效程序员,那么学习这个就没有什么可以替代的.
您还可以阅读Java Collections路径以开始使用.
| 归档时间: |
|
| 查看次数: |
49185 次 |
| 最近记录: |