Java漫谈12

上周聊完了Java中的String这种类型,这周我想聊聊Java中的集装箱——集合。当然,这篇也是Java基础漫谈系列的最后一篇文章。不过可能你会说不对啊,Java的基础还有流,java与数据库的交互,这些难道都不谈么。因为我的知识不够了,hold不住那两块的内容,因此,对我来说,最重要的事就是“补货”,货齐了,到时候,咱们再聊。

我刚开始学集合的时候其实是被忽悠着接受集合这个概念的,过程大概是这样的。Java基础课上,老师只是简单地提了一下集合这个概念,然后用基本的数据类型做的案例演示。还记得基本数据类型么,就是之前提到的Java中的八大金刚。而这些功能数组也能做,所以当时我就糊涂了,明明有数组了,为什么还要弄个集合。这种感觉就像是明明能把书拿在手里带到教室,为什么非得将书先放到书包里,然后再把书包带到教室呢。

这是为什么?

老师直接让我把集合相象成一个可变的数组。在Java中数组初始化的时候是需要指定长度的,这里所说的初始化,就是新建的意思。在以后的使用中,如果存储的数据变多了,对不起,你不能增加数组的长度,只能重新定义一个新的长度的数组,然后将原先数组的数据加进去,最后将多出来的数据加进去。不过在此后的很长一段时间里,我对集合的理解还真的就是一个可变的数组。

直到后来。

看了马士兵和毕向东的视频,才大概建立起来对集合的理解。尤其是对集合体系的理解。这些资料网上比较详细的一堆一堆的,今天咱么不聊这个。有兴趣的话,也可以去网上搜“java 集合体系”,在文末的清单中我列出了自己对它的简单理解。

这次我想聊聊今天回看这个过程的感受。概括起来说就是抓一小点,先用起来,产生联系,不断扩展。一开始的时候,只是将集合作为需要用到可变长度数组的一个替代方案,那个时候只是会用它的最最基本的特性。就是因为这一个原因,所以才没有忘记它。后来在不断的使用中发现它的新的特性,比如map的key-value特性可以实现快速查询的问题。刚开始的时候也只是知道有map这个名词,后来由于项目,或者bug的驱动去网上查map的使用,才逐渐掌握了map的最最基础的用法——创建,存值,取值。而这个时候也不要强求自己对map的了解能循着这条线深下去,这不现实,因为整体的集合框架的体系没有建成,这条线挖得越深,难度也就越大,随之带来的恐惧和消极情绪就会越多。

而这个时候不是立马去系统得学习框架的知识,而是先想方设法地把这个Bug先给解决掉。这是因为系统地学一般比较耗时间,时间上不允许,二来,在解决这个bug之后,这时候对集合的理解已经有一些了,这样再去系统的学,就会有个基础。

接下来就是系统地学,这里既可以选择看视频,也可以选择看书。可以不求甚解,但要较之前认知上有拓宽,比如能理解几个新词,对其中的某些新概念能用现实中的例子做对比。

通过系统地学习,一般的开发都能hold住。对于那些迷茫的概念,也大概知道是从属于哪个核心概念之下,这样去网上搜就可以了。而且搜索到的文章中提到的那些基础的概念和知识此时也不会是一脸蒙圈的感觉。但有可能是似懂非懂的感觉。这个时候如果有耐心的话,就可以一边看一边再弄懂一下这些概念,最后的时候,最后当理解了之前一开始提到的那个迷茫的概念的时候,对这个概念的理解就扩展了。

这个是我总结的在Java实战中把一个概念从入门到熟练运用的一个过程,希望能对你有帮助。

清 单

使用集合的三柄剑:

第一柄:天剑 List,元素可重复,存取有序,但查询速度慢。

第二柄:地剑 Set,元素不可重复,存取无序,谜一样的查询速度。

第三柄:人剑 Map,一种key-value形式,查询速度快。

剑鞘:Collections,针对集合的工具类,提供一些列静态方法,实现对集合的搜索,排序,合并等功能。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2017-12-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编舟记

我是怎样学习新编程语言的

学习新的编程语言的最终目的是解决实际问题。掌握编程语言的过程,在某种程度上近似学习一种新的工程实践。不仅解决问题固然可乐,学习的过程也同样充满了新鲜感,不过需要...

13430
来自专栏逸鹏说道

重温数据结构系列随笔:数据结构的基本概念

现在项目已经踏上正轨,有不少时间可以用来学习,昨晚发现柜子里那本大学时候啃过无数遍的(数据结构 C语言版),那真的无限感叹啊,初恋女友啊,大学回忆啊都涌上心头。...

30040
来自专栏Java社区

开发团队中的两种编程高手

12630
来自专栏中国白客联盟

35行代码实现千万级别字典的快速去重

字典对于一个安全从业者的意义非常重要,尤其是渗透测试工程师,一份好的字典往往能带来意外的收获。 在当前各种裤子满天飞的环境下,快速整理有用信息并加入自己的字典已...

70340
来自专栏程序人生 阅读快乐

[现代编译原理C语言描述].(美国)Andrew.W.Appel.清晰版

《现代编译原理:C语言描述》全面讲述了现代编译器的结构、编译算法和实现方法,是Andrew w.Apple的“虎书”——Modern Compiler Impl...

11720
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 七、项目:机器人

34260
来自专栏程序员八阿哥

王老板Python面试(11):真实 Python 爬虫面试题

就在昨天我面试了,来到上海之后面试的第一家公司,面试过程挺顺利,不出意外今天下午就会收到 offer。面试完之后,我走在路上,整个人都是在傻笑的状态,路人一脸关...

35510
来自专栏web前端教室

这几天在看JS的数据结构与算法

这几天在看数据结构与算法,js描述这书 ? 这书看着标题挺高大上的,但内容不难, 只要有JS的基本知识,都能看明白。 它里面不讲JS本身如何,而是把各种数据结...

24380
来自专栏程序员互动联盟

【入门指导】C和C++的区别

C和C++有啥区别,C直接干事情的,C++规划后直接干事情的。这个比喻不是很恰当,面向过程和面向对象,C就是每个细节都得一目了然,C++你把事情干出来了,我不管...

32040
来自专栏前端说吧

JS-过滤敏感词【RegExp】

61860

扫码关注云+社区

领取腾讯云代金券