关于ArrayList的思考
优点: 查询快,通过脚标直接查询
缺点 :
1.增删慢,消耗cpu性能(由于数组的特征)
增加
| 1 | 2 | 3| 4| 5| 6| 7| 8 |
假定需要list.add(2,666) -在list[2]添加666
数组需要将list[2]之后所有元素向后移一位并在list[2]插入666
| 1 | 2 | 666 | 3 | 4 | 5| 6| 7 | 8 |
需要进行(index-size)次数的操作
反之,delete操作要将移除元素之后所有的元素向前移动一位
需要进行(index-size-1)次数的操作
假如数组长度非常长时间很慢
2.另外,数组长度不可改变,如果数组添加新元素时长度不够,需要创建1.5倍于原长度的新数组
未使用的空间会造成内存空间浪费
有没有一种数据结构可以用多少申请多少空间?
有没有一种数据结构可以提高增删效率?
###链表
链表:由链将每一个node连接 不连续
node由两部分组成
- 数据
- Node next 存放下一个数据的node对象
public class LinkedList{
public static void main(String[] args){
LinkedList linkedlist = new LinkedList;
linkedlist.add(111);
linkedlist.add(222);
linkedlist.add(333);
system.out.println(linkedlist);
}
}
- 链表和数组的区别
链表查询慢(因为没有索引),但是增删快,用多少个空间就申请多少个空间