ArrayList,linkedlist,Vector,stack是list的四大实现类,
ArrayList实现了动态数组的数据结构,linkedlist是基于链表结构的数据结构
ArrayList适合查找,linkedlist适合增删,
查找:ArrayList 效率快 : 因为linkedlist 是线性的数据存储,需要移动指针,
增删:LinkedList 效率高 : 因为linkedlist在非首尾的增删操作,如果是操作ArrayList 会影响到数组的下标。
扩充:
数组和list之间的转换
数组-list Arrays.aslist(数组);
lsit-数组 list.toArray();
queue 中的pull()和remove()区别
相同: 都是返回第一个元素,并在队列中,删除返回的元素。
不同: 如果获取到的元素为null pull()返回的是null,remover()则抛出异常 NoSuchElementException
queue.offec("元素") - 添加元素
扩展:假设一个无线循环,使用arraylist,linkedlist 存储,直至内存溢出,哪一个存储的数据多
分析:
arraylist:动态数组,每一次创建,都会申请一定的内存大小,倘若,假设我申请1G的空间,但是内存剩余只有500M,这个时候,是申请失败的。因此不会数据存储失败,剩余空间无法利用。
linkedlist:碎片化的存储,不需要申请内存空间,因此不会出现上述问题。
答案:linkedlist 存储的数据多。