list与linkedlist(添加、删除元素)
1)jdk1.8中list遍历过程中可以直接删除元素了(jdk1.7可以通过倒序遍历删除或iterator遍历删除元素)
List<Integer> list = new ArrayList<>(); list.add(0,1); list.add(0,2); list.add(0,3); list.add(0,4); System.out.println(list); // list遍历过程中可以直接删除元素 for (int i = 0; i < list.size(); ++i) { Integer each = list.get(i); if (each == 2) { list.remove(each); } } System.out.println(list); List<Integer> linkedList = new LinkedList<>(); linkedList.add(0, 10); linkedList.add(0, 100); linkedList.add(0,50); linkedList.add(0, 80); System.out.println(linkedList);
2)java中list的底层实现是数组,且随着元素增加需要动态扩容。linkedlist是双向链表,实现了list接口及deque接口。
3)
list.add(index, element)操作,会移动index及之后的元素到后面,当超过数组长度上限时,就会进行扩容。
linkedlist.add(index, node)也是在指定位置增加元素,会调整新增结点及现有node结点的指针指向。