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),作者:怀英

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java漫谈10

    原来的计划是这次谈谈Java中String的另一个特征——final,不过因为还在整理思路,就放在下一次聊,这次我想聊一聊Java被斯坦福除名之后,我知道这个消...

    用户1335799
  • Java漫谈1

    对于接触编程的人来说,Java更多地代表了一门编程语言。 Java是一门通用的计算机编程语言,它是并行的,基于类的,面向对象的,可以一次编写到处运行的一门语言。...

    用户1335799
  • Java漫谈4

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

    用户1335799
  • TIOBE 3 月编程语言排行榜

    日前,一月一更的 TIOBE 编程语言社区最新发布了 2019 年 3 月排行榜。

    Rookie
  • java-编程开发

    JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是...

    Java知音
  • [PGM] I-map和D-separation

    概率图模型,究其目的,在于描述多个(单个就没有意义了)变量概率分布之间的关系。有向图模型的描述方法是有指向性的,如果两变量之间有因果关系,这种描述方法就...

    sea-wind
  • 淘汰?不存在的!Java程序员如何避免职业危机

    Java行业在当下人才是供不应求,但是作为Java程序员的你也得居安思危,你要知道你身处的是一个高速变化的行业,稍不留意你的位置还是存在被取代的风险,那么对于一...

    美的让人心动
  • Java基础学习笔记一Java介绍

    Java是sun公司开发的一门编程语言,目前被Oracle公司收购,编程语言就是用来编写软件的。

    緣來
  • JDK 11 版本时间表公布

    在 JDK 10 发布两天之后,Oracle Java 平台组首席架构师 Mark Reinhold 提出了 JDK 11 GA 发布的时间表:

    Debian社区
  • 大佬经验| 大三、研二的秋招备战路线(Java、大数据)

    1.分享经验。从去年五月份到今年五月份,我面试了n家公司,也收了(n/2+10)家的offer,经历了两个春招一个秋招,其中有腾讯、今日头条、京东等offer。...

    Python进击者

扫码关注云+社区

领取腾讯云代金券