最常见的结合有 list set map 但其实他们还是有区别的,list 和 set 都是继承 collection,但collection也是继承iterable 所以 collection的部分方法和iterable 一样 (方法有哪些可以看上图)
例如
- remove()方法
collection的remove(int) iterable的remove()要结合自身的next()方法(获取下一个)才可以使用,所以在改变上就可以看出区别
-------------①collection的remove需要传值 而他的老爸iterable的remove需要配合next()使用
-------------②(性能方面)remove方法也是有执行速度区别的 collection的方法因为是单链表结构,需要从第一个开始找值进行移除 而 iterable的移除是直接移除下一个
-------------③(容错方面)从下面图片可以看出 因为collection的移除是循环他集合中的所有值,如何其中的前排值数量发生改变,那它被移除后面的值的下标都会-1以去弥补那个空缺,但你要移除的值要是在你先前移除的值的后面就会报错。而iterable的移除只是移除下一个所以不会报错
人话就是 : collection在移除的过程中数据发生了改变可能报错而iterable不会
看图以解释集合的区别
-
右边:
1.1. list(特点:有顺序,值可重复)
在list的下面还有ArrayList(数组结构,动态数组)和LinkedList(链表结构)这两个,虽然他们同属于list。但还是有区别,所以作用的地方也是有差异的
-------------①ArrayList的读出写入(get,set)的方法比LinkedList快
-------------②LinkedList的增删改比ArrayList快
如何证明可以看下图
1.2. set(特点:无序,值不可用重复)
HashSet,TreeSet,LinkedHashSet都属于set。也有set的值不可重复的特点。但也是各有各的特点
-------------①HashSet 速度最快,但没有明显的顺序保存数据,可以有null,但只能有一个
-------------②TreeSet 保存的结果以升序的方式对象
-------------③LinkedHashSet 先进先出的规则 按保存顺序保存
1.3. queue(特点:先进先出,队尾添加元素,在队头删除元素)
队列的存储结构:队列与栈一样是一种线性结构,因此以常见的线性表如数组、链表作为底层的数据结构。 -
左边:.
2.1 Array
Array(数组)在被定义的时候必须要指定它的大小并且要确定他的类型2.2 map(特点:以键值对的方式存储值。键不可重复,值可以多个 null也可以存在)
HashMap,TreeMap,LinkedMap都属于map
-------------①HashMap 读出速度最快,但没有保存顺序
-------------②TreeMap 按结果的升序保存键
-------------③LinkedMap 按结果的升序保存键,也是有较快的查询速度
list,set,map 之间的区别