您的位置 首页 java

必须要知道:Java中的Collection重要知识点,为你简明梳理

必须要知道:Java中的Collection重要知识点,为你简明梳理

Collection


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

必须要知道:Java中的Collection重要知识点,为你简明梳理

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

List、ArrayList、LinkedList


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

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

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只会影响到二个。

结论

ArrayList

LinkedList

找特定index值

可以快速找到。

需要一个一个找,比较慢

插入中间值

影响中间index之后的每一个值,所以执行时间比较久。

只影响两个指向,高效

Set、HashSet、TreeSet


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

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

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

  1. 使用者自定义排序 → TreeSet

  2. 快速取出 → HashSet

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

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

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

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

下图是Stack的示例:

Stack的示例

下图是Queue的示例:

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重要知识点,为你简明梳理

文章地址:https://www.zhihuclub.com/186510.shtml

关于作者: 智云科技

热门文章

网站地图