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

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

长沙一度软件培训      2022-05-03 14:07:01     43

编程基础入门,Java中collection接口,CollectionCollection在Java的基础中是非常重要的部分,它占了一整个章节,而Collection主要的内容如下图:本文将介绍几个比较重

课程价格 请咨询

上课时段: 授课校区:

详细介绍

Collection

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分别来储存,如下图所示:

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

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

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

结论

Set、HashSet、TreeSet

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

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

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

使用者自定义排序→TreeSet

快速取出→HashSet

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

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

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

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

下图是Stack的示例:

下图是Queue的示例:

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.bjpowernode.com/tutorial_java_advance/633.html

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

学分高考提醒您:交易时请核实对方资质,对于过大宣传或承诺需谨慎!任何要求预付定金、汇款等方式均存在风险,谨防上当。