小白学java第38天
LinkedList:
1. LinkedList底层维护了一个双向链表
2. LinkedList中维护了两个属性first和last分别指向首节点和尾节点
3.每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表
4.所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高
Arraylist与Linkedlist的比较:
底层结构 | 增删的效率 | 改查的效率 | |
ArrayList | 可变数组 | 较低 数组扩容 | 较高 |
Linked | 双向链表 | 较高,通过链表追加 | 较低 |
如何选择ArrayList和LinkedList:
1.如果我们改查的操作多,选择ArrayList
2.如果我们增删的操作多,选择LinkedList
3.一般来说,在程序中,80%-90%都是查询,因此大部分情况下会选择ArrayList
4.在一个项目中,根据业务灵活选择,也可能这样,一个模块使用的是ArrayList,另外一个模块是LinkedList
set接口:(以Set接口的实现类HashSet接口解释)
1.无序(添加和取出的顺序不一致),没有索引
2.set接口的实现类的对象(Set接口对象),不允许重复元素,所以最多包含一个null
3.JDK API中Set接口的实现类有:
Set接口的常用方法:
和List接口一样, Set接口也是Collection的子接口,因此,常用方法和Collection接口一样
Set接口的遍历方式:
同Collection的遍历方式一样,因为Set接口是Collection接口的子接口
1.可以使用迭代器
2.增强for
3.不能使用索引的方式来获取.