关于java容器类学习心得体会.docx

上传人:aa****6 文档编号:50999931 上传时间:2018-08-12 格式:DOCX 页数:8 大小:17.89KB
返回 下载 相关 举报
关于java容器类学习心得体会.docx_第1页
第1页 / 共8页
关于java容器类学习心得体会.docx_第2页
第2页 / 共8页
关于java容器类学习心得体会.docx_第3页
第3页 / 共8页
关于java容器类学习心得体会.docx_第4页
第4页 / 共8页
关于java容器类学习心得体会.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《关于java容器类学习心得体会.docx》由会员分享,可在线阅读,更多相关《关于java容器类学习心得体会.docx(8页珍藏版)》请在金锄头文库上搜索。

1、关于关于 JavaJava 容器类学习心得体会容器类学习心得体会由于小编对 C+比较熟悉,所以学习 Java 应该重点体会 Java 带来的新概念。本文基本上是 Java 标准库中集合框架的基本概念,没有例子。写本文的目的在于方便小编很长时间后若是忘了这些东西可以通过这片文章迅速回忆起来。整个 Java 容器类的基础是容器接口(例如Collection,Map 等接口),而不是类。使用接口的最大好处在于将容器的实现与容器的接口分开,这就意味着你可以使用相同的方法访问容器而不用关心容器是由什么样的数据结构实现的。同样,Iterator 接口也使得用户可以使用相同的方法访问不同的容器类。以上这些是

2、通用算法的基础。ChinaCollection 接口Collection 接口有如下基本方法:boolean add(Object obj):如果添加对象后,集合确实发生了变化,则返回 true;否则返回 falseIterator iterator():返回一个实现了 Iterator 接口的对象此外,还有int size(),boolean isEmpty(),boolean contains(Object obj),void clear()等许多有用的方法Map 接口Map 用于存放关键字/值对。有如下基本方法:Object get(Object key)Object put(Objec

3、t key,Object balue)Set keySet()Set entrySet()此外,还有其他有用的方法。需要注意的是,从表面看它似乎就是一种由键值对构成的集合,但实际上并不是这样。不过另一方面假如将 Map的某一部分看作集合,有时候也还是显得非常方便的。换言之你可以创建一个集合用它来表达 Map 的那一部分。综上所述,一个 Map 可以返回的东西包括它的键值构成的一个 Set、由它的值构成的一个集合或者由它的键值对构成的一个 Set。Iterator 接口Iterator 接口有下面 3 个基本方法:Object next():返回迭代器刚越过的元素的引用boolean hasNe

4、xt():判断容器内是否还有可供访问的元素void remove():删除迭代器刚越过的元素注意:Java 中的迭代器与 STL 中的迭代器在概念上有很重要的区别。在 STL 中,迭代器类似于数组的索引,使用这种迭代器可以查看存放在该位置上的元素(类似于通过数组索引 i 来访问 c 一样)。Java 中的迭代器并不这样运行。查看与位置的变化紧密的结合在一起。每次通过 next()访问一个元素的同时,迭代器的位置会自动向前走一步。这个问题可以这样理解:Java 中的迭代器指向的位置并不是元素,而是元素之间。这样,每次调用 next()时,迭代器便越过下一个元素,同时返回它刚越过的那个元素的引用。

5、根据上面的说明,很容易得出下面的代码是错误的:();();而下面的代码是正确的:();();();迭代器的典型应用Iterator it=();while()Object obj=();/do something with obj子接口List 接口List 从 Collection 接口中分立出来是因为 List 的特点有序的集合。这里指的有序并不是按照大小排好序的(Sorted),而是指集合是可以以确定的顺序访问的序列。针对 List 的这个特点,它比 Collection 接口增加了通过索引进行操作的方法。例如,add、remove、get、set 等方法的参数表中都可以加入索引的数值,

6、从而操作处在索引位置处的元素。Set 接口Set 与 List 的不同,它里面的元素是无序的;所以,不能通过任何索引的方法来操作 Set 对象 China It Power . ComZKWEDListIterator 接口使用与 List 的迭代器,比 Iterator 接口增加了一些方法(例如 add()等)。此外,由于 List 是双向表,所以还增加了 Object previous()和 boolean hasPrevious()方法,用法与 next()和 hasNext()一样。China It Power . ComZKWEDSortedMap 接口包含如下基本方法:Compar

7、ator comparator()Object firstKey()Object lastKey()China It Power . ComZKWED抽象容器类包括AbstractCollection,AbstractList,AbstractSet 等等China It Power . ComZKWED为什么要有抽象结合类?例如 Collection 接口中定义了许多有用的方法,如果实现 Collection 接口的每个类都自行实现这么多的方法,那将是非常麻烦的。为了使实现 Collection 接口的类的实现更容易,AbstractCollection 类让一些基本方法(比如add()和

8、iterator()变成了抽象的方法,而利用这些基本方法的其他方法(例如 addAll()等等)则具体实现了。China It Power . ComZKWEDArrayList 与 LinkedList都是实现了 List 接口的类,是有序集。List 接口支持通过索引的方法来访问元素,对于这一点,ArrayList 没有任何问题;但是对于 LinkedList 则有很大的问题,链表本身不应该支持随机存储,但是作为 List 的一个实现,链表也提供了对随机访问的支持,但是效率很低。每次通过索引的方法都是进行一次遍历。我认为,其实就不应该让链表支持随机访问;而 Java 这样实现我想是因为整个

9、集合框架的体系,使得链表与数组可以使用同样的方法使用。综上所述,对于 LinkedList 最好不使用随机访问,而使用迭代器。China It Power . ComZKWEDTreeSetTreeSet 是 SortedSet 的一个实现。根据数据结构的知识可以知道,树的效率非常高,而且 Java 标准库中有TreeSet 这样的类,以后应该尽量使用 TreeSet 来提高程序的效率。需要注意的是:TreeSet 作为有序集,它通过compareTo 或者 Comparator 来将集合元素排序。任何具有相同比较值的元素(无论它们是否 equals(),在 TreeSet中都作为同一个元素,

10、从而不能有重复。这样以来,即使是不同的对象也不能加入到集合中,这一点有时候很不方便。我在编写 A*算法时,不同状态有时候对应着同一个启发函数值,那么这些不同的状态就无法加入到 TreeSet 中。China It Power . ComZKWEDHashSetHashSet 是非常高效的数据结构,与 TreeSet 不同,HashSet 是比较对象的 equals()方法来区分不同的对象。这样只有真正不同的对象才能不被重复的加入到集合中。需要注意的是:HashSet 效率非常高,但是对象的hashCode 函数不好确定。一般默认的对象的 hashCode 函数是根据对象的内存地址得到的。好的

11、hashCode 函数是HashSet 成功运用的关键。China It Power . ComZKWED什么是视图?对映象类使用 keySet()方法,仿佛该方法建立了一个新的集合,并将影响的所有关键字都填入这个集合。实际情况并非如此,对这个集合的任何操作都将反映到原始的映象对象上。实际上,keySet()返回的是一个实现 Set 接口的对象,对该对象的操作就是对映象的操作。这样的集合成为视图。视图的应用将现有的容器变为线程安全的容器:使用(Collection c)方法,在 SDK 文档中该方法的解释是“Returns a synchronized (thread-safe) collec

12、tion backed by the specified collection” 。将现有的容器变为只读的容器:使用(Collection c)方法,在 SDK 文档中该方法的解释是“Returns an unmodifiable view of the specified collection.” 。子范围Arrays 类中的 asList()方法 China It Power . ComZKWED通用的集合接口带来的一大好处就是可以编写通用算法。可以使用 Collections 中的静态通用方法,也可以编写自己的通用方法。(具体的算法的内容在此略去)China It Power . ComZKWED总结:千万记住这句话没有最好的容器(数据结构),要根据不同的问题选择不同的容器,以此来达到功能的要求和效率的最优。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号