专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 编程基础入门,Java中collection接口

编程基础入门,Java中collection接口

更新时间:2020-08-03 14:58:05 来源:赢咖4 浏览1709次

Collection

Collection在Java的基础中是非常重要的部分,它占了一整个章节,而Collection主要的内容如下图:

编程基础入门,Java中collection接口

本文将介绍几个比较重要而且常用的接口类型或者类。

List、ArrayList、LinkedList

首先要讲的是List、ArrayList、LinkedList。大体上List这一类的Class,跟Array很类似,List上跟Array不同的是,Array需要提前知道长度,而List是不需要的。

而List是一个接口「Interface」,而ArrayList与LinkedList是其实现类「Class」。所以通常声明时这样写:

List<String>list=new ArrayList<String>();

ArrayList与LinkedList的差別

ArrayList与LinkedList都是List接口的实现类,所以List有的功能,ArrayList与LinkedList全都实现了;而这二个List的差别在于,寻找下一节点的位置与切换下一个节点的位置。

假设现在有三个Object在heap中,利用ArrayList与LinkedList分别来储存,如下图所示:

编程基础入门,Java中collection接口

此时因为ArrayList是照顺序储存的,所以在取得特定的index元素时,非常方便快速,而LinkedList在取得特定的index元素,因为要一个一个去取,所以会比较慢。

假设今天要插入第四个Object A,而且要接续在Object 1之后,所以会变成:

编程基础入门,Java中collection接口

我们可以看到ArrayList的Object 2与Object 3都被移位了,而LinkedList则是修改Object 1的指向,再由Object A的指向Object 2,所以修改了二个指向,就像指针一样非常高效,如果List内的数量很多,ArrayList会影响到被插入的index后的每一个,而LinkedList只会影响到二个。

结论

编程基础入门,Java中collection接口

Set、HashSet、TreeSet

Set与List其实是很类似的东西,不过它们之间最大的区别在于,Set的元素不可以重复,不过List可以。

下图是一List与Set的示例代码:

编程基础入门,Java中collection接口

因为Set具有不能重复的特性,而判断重复的标准是根据Object的equals()来判断;另外Set的内容因为不能重复,所以会有排序的问题,如果要考虑排序问题:

使用者自定义排序→TreeSet

快速取出→HashSet

TreeSet默认为ASCII的方式排序,不过使用者也可以让类实现java.lang.Comparable,自定义排序规则;而HashSet则是根据Object的hash()获取的值来决定先后顺序。

*注意:List在取出时是有顺序的,但是Set在取出时,是会根据排序后的顺序,请注意,下图是示例代码:

编程基础入门,Java中collection接口

Stack(先进后出)与Queue(先进先出)

Stack与List是很类似的东西,都是将一堆元素塞进去里面后,再慢慢取出来;不过它们有Stack与Queue有它们自己的特性,Stack是先进后出(LIFO),而Queue是先进先出(FIFO),我们直接来看示例代码:

下图是Stack的示例:

编程基础入门,Java中collection接口

下图是Queue的示例:

编程基础入门,Java中collection接口

Stack与Queue的peek()方法

Stack与Queue都是在取出元素后,就将该元素从Stack或Queue中移除了,所以为了应对更多的情况,所以在Stack或Queue中都有提供对应的方法peek(),这个方法取出来的元素与Stack的pop()与Queue的poll()是相同的,不过它不会将元素从Stack或Queue中移除,使用更加灵活。

Map、HashMap、TreeMap

Map是一种方便使用者储放key、Value的一种集合,而且它也很接近Set与List的集合体,存储key时使用Set,存储Value时使用List。

Map的Key是使用Set的方式存储的,所以Key是不能重复的,而Value是用List的方式存储,所以Value是可以重复的。

而Map中的Key因为使用Set的方式存储,所以跟Set一样,Set有HashSet、TreeSet,而Map则有HashMap与TreeMap,主要都是针对Key的部分。

Java中Collection集合概述:http://www.6acf.com/tutorial_java_advance/633.html

以上就是赢咖4java培训机构的小编针对“编程基础入门,Java中collection接口”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>