【新手向】如何学习Java集合
前言
只有光头才能变强。
文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y
如果认识我的同学可能就知道,我已经写过很多系列级的文章了,但是没有一篇是写给刚入门的同学来看的,大多数都是依照我个人的学习进度来编写。
虽然可以按照我的文章顺序去一篇一篇阅读,但是如果是新入门的同学可能更希望得到的是一个学习指南(路线指引)。于是我就有了这篇文章,希望对刚入门的同学有所帮助。
如果这篇文章的反响不错,会持续更新其他的专题。觉得我写得不错,希望可以给我一个赞!
Java集合学习指南
本文会提出很多可能新手会想到的问题,但不会一一解答,只会往大方向去说明白。本文的内容偏向于指南,而非技术教程讲解。
如果想要得到具体的答案,可以翻阅我曾经写过的资料:https://github.com/ZhongFuCheng3y/3y,或者加入人才交流群跟众多开发者讨论,前面的Github链接有我的联系方式。
学习一项技术之前,必须知道为什么要学它!
Q: 我们得知道为什么要学习Java集合,学到Java集合的时候已经学过了数组了,为什么我不用数组反而用Java集合。数组和Java集合有什么区别?
A:Java是一门面向对象的语言,就免不了处理对象,为了方便操作多个对象,那么我们就得把这多个对象存储起来,想要存储多个对象(变量),很容易就能想到一个容器(集合)来装载
总的来说:就是Java给我们提供了工具方便我们去操作多个Java对象。
如何入门学习Java集合
Q: 从上面我们已经知道了为什么要学Java集合,下面我们就该知道Java集合的基本用法,以及从它整体的知识点去了解它是什么
A: 我们学习Java集合实际上就是为了方便操作多个对象,而Java给我们提供一系列的API(方法)供我们去操作。所以在初学Java集合的时候我们更多的是学习这些API(方法)分别是什么意思。
Q: 对Java集合的API使用有一定的了解之后,我们就应该从面向对象的角度去理解它。为什么会抽象出多个接口,以及每个接口的有什么特性。
A: 我们可以总结出几个常用的实现类,这几个常用的实现类我们必须要知道它的数据结构是什么,什么时候使用这个类。
需要学习和了解的数据结构:
到这里,我们简单了解各个实现类的数据结构以后,我们可能会简单记住下面的结论:
- 如果是集合类型,有List和Set供我们选择。List的特点是插入有序的,元素是可重复的。Set的特点是插入无序的,元素不可重复的。至于选择哪个实现类来作为我们的存储容器,我们就得看具体的应用场景。是希望可重复的就得用List,选择List下常见的子类。是希望不可重复,选择Set下常见的子类。
- 如果是
Key-Value型,那我们会选择Map。如果要保持插入顺序的,我们可以选择LinkedHashMap,如果不需要则选择HashMap,如果要排序则选择TreeMap。 - 总之:学完常见实现类的数据结构之后,你对它的使用场景就有一个清楚的认知了。
集合进阶与面试
如果我们在写代码的时候懂得选择什么样的集合作为我们的容器,那已经是入门了。但要知道的是,如果去面试之前,你懂的不应该只有这么少。
(如果还在初学或者零基础的同学我建议可以跳过这一部分,在网上有可能很多言论,比如:“如果你Java基础扎实的话,那你以后找工作就不愁了。在学Java基础的时候一定要把基础学好,看源码!”。但我认为,这一块是建立在有一定的编码/项目或者是去找工作的时候才成立的,一个刚入门学Java的,就不应该看源码,这很容易把自己劝退了)
我的观点是:如果刚入门学Java,首先你要十分清楚知道为什么要学这个,这个到底有什么用,用在哪些地方,以及熟悉常用的方法,就足够了。即便你花了两周左右时间去看源码实现了,可能看懂了。但是,你相信我,你大概率会忘掉。
Java集合是面试的重点,我在面试的时候几乎每家公司都会问集合的问题,从基础到源码,一步一步深入。Java集合面试的知识点就不限于基本的用法了。可能面试官会问你:
- HashMap的数据结构是什么?他是怎么扩容的?底层有没有用红黑树?取Key Hash值是JDK源码是怎么实现的?为什么要这样做?
- HashMap是线程安全的吗?什么是线程安全?有什么更好的解决方案?那线程安全的HashMap是怎么实现的?
- HashSet是如何判断Key是重复的?
- .....很多很多
如果想要得到具体的答案,可以翻阅我曾经写过的资料:https://github.com/ZhongFuCheng3y/3y,或者加入人才交流群跟众多开发者讨论,前面的文章链接有我的联系方式。
脑图的原图在GitHub上也有获取的方式
最后
总的来说,入门Java集合并不难,归根到底我认为就是三件事:
- 了解为什么要学习Java集合
- 学习Java集合的各个接口以及常用的实现类用法
- 学习常用实现类的数据结构是什么,能在写代码的时候选择一个合适的实现类装载自己的对象。
零基础入门不需要阅读源码,面试前一定要回顾和阅读源码(这是面试必考的知识点)!
本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y
乐于输出干货的Java技术公众号:Java3y。公众号内有300多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!
非常感谢人才们能看到这里,如果这个文章写得还不错,觉得「三歪」我有点东西的话 求点赞 求关注️ 求分享
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, Jav ... 翻翻博客,写了挺多,也学习过这些知识,翻翻脑子,没找到,再来一遍,整理好方便查阅复习. 本次学习内容来自On Java8java编程思想第五版 集合 泛型和类型安全的集合 基本概念 添加 ... 由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间,还有一个很重要的原因就是java这门语言更适合商业应用,所以高校里大部分博士老师们对此语言的了解甚至不比本科生多. 在这种环境下, ... 1.列表 List接口(继承于Collection接口)及其实现类 List接口及其实现类是容量可变的列表,可按索引访问集合中的元素. 特点:集合中的元素有序.可重复: 列表在数据结构中分别表现为: ... 写过Java的人都知道Java集合类,也用过Java集合类.Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具.它就像工匠的工具箱一样,它能给使用它的 ... 在学习java集合过程中发现了传值和传引用的区别: 我们来看下面两句话 ●java集合就像一种容器,我们可以把多个对象(实际上是对象的引用),丢进该容器.(来自疯狂java讲义) ●当使用Iterat ... Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ... Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ... Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ... 一. 概述 Observer 模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变. Sbuject 相当于 ... 1.open_basedir介绍 前言:前些日我用lnmp一键安装包出现了open_basedir的问题,因为我把项目目录变了,所以要在的fastcgi.conf下面加上open_basedir的目录 ... 1:下载 ElasticSearch 镜像 docker pull docker.io/elasticsearch:5.6.8 2:创建 ElasticSearch 容器: 注意:5.0默认分配jvm ... 1 简介 我们知道Map只是一个接口,它有多种实现,Java中最常用的是HashMap了.而本文想讲述的是另一个实现:EnumMap.它是枚举类型的Map,要求它的Key值都必须是枚举型的. 2 创建 ... POSIX消息队列相关函数 mq_open 功能: 用来创建和访问一个消息队列 原型: mqd_t mq_open(const char *name, int oflag); //只能用来打开消息队列 ... 一.VMware虚拟机的安装 首先你需要拥有一款软件VMware,这是一款虚拟机安装软件.Vmware比起Vbox收费较贵,占用资源大,但是拥有大量的资源以及拥有克隆技术,适合新手学习使用,较为专业. ... 1.Web services,就是新建项,选择Web服务: 2. 然后可以用Winform来调用webServices: 然后添加“服务引用”,,命名空间可以自己填. 3. 直接 new ,然后调用就 ... iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于 ... 1安装bind yum install -y bind bind-utils bind-chroot 2 修改配置文件 # grep '^[^#]' /etc/named.conf options { ... PCA(主成分分析法) 1. PCA(最大化方差定义或者最小化投影误差定义)是一种无监督算法,也就是我们不需要标签也能对数据做降维,这就使得其应用范围更加广泛了.那么PCA的核心思想是什么呢? 例如D ...【新手向】如何学习Java集合的更多相关文章
随机推荐