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

相关文章

来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1873
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

3006
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

24010
来自专栏DT乱“码”

简单的考勤系统

连接数据库类 package com.lianrui.it; import java.sql.Connection; import java.sql.Driv...

3529
来自专栏我和未来有约会

silverlight向服务器post数据类

using System; using System.Net; using System.Windows; using System.Windows.Co...

1995
来自专栏听雨堂

想修改CSS

      下载了一个“通用”的CSS文件,本来想偷懒的,结果发现有问题,就是它用的颜色是变量定义的,无法识别。我又找不到在哪里可以定义。 BODY{     ...

20510
来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2832
来自专栏菩提树下的杨过

winform中linkLabel的用法(示例)

private void Form1_Load(object sender, EventArgs e)         {             this...

1935
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2318
来自专栏跟着阿笨一起玩NET

[C#]工具类—FTP上传下载

  不错的文章:http://www.cnblogs.com/greatverve/archive/2012/03/03/csharp-ftp.html

1241

扫码关注云+社区