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 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

【我的漫漫跨考路】数据结构之线性表

正文之前 ? 昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天...

2986
来自专栏Crossin的编程教室

【每周一坑】程序猿的浪漫

来看本周的题目。 ? 前几日刷朋友圈时看到这样一个故事: 读艺术相关科系的她,透过联谊认识了一位程序员,两人凑巧都是离乡背井在外地读书,更巧合的是他们都在同一个...

2388
来自专栏前端萌媛的成长之路

前端语义化

1374
来自专栏程序人生

谈谈面向对象编程

最近写了些和函数式编程的文章,有读者和我讨论函数式编程和面向对象编程的优劣。二者都是很好的编程思想,都在着力解决代码重用的问题,也彼此吸收对方的优点,所以大可不...

40411
来自专栏一个会写诗的程序员的博客

[zz]Kotlin 和 Checked ExceptionKotlin 和 Checked Exception

最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代了 Java,成为了 Android 的“钦定语言”,很多...

612
来自专栏C语言及其他语言

[每日一题]循序渐进思考

相信大家经常会遇到自己想不透的问题,这个时候可能就需要看一下别人写的代码,从中借鉴他的思想和方法,今天小编想要告诉大家的就是如何去看别人的代码,借鉴别人的思想 ...

2998
来自专栏Golang语言社区

Gopher面试中的Coding

从四月份下半月开始,陆陆续续面试了几家公司,都是golang的岗位。每一次面试,侧重点都会有不同,有的会直接给过来一道试题, 然后边解题,边讲述自己的思路,然后...

3697
来自专栏Coco的专栏

谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode

1437
来自专栏怀英的自我修炼

Java漫谈4

之前的一篇文章,我们用段誉比武的方式类比了构件类的方式,其中把段誉和慕容复共有的出招这个动作写成了一个功能方法。所谓出招,换个角度来看,就是将人身体中的能量,比...

34010
来自专栏达摩兵的技术空间

建造者模式解读

502

扫描关注云+社区