(1)List集合实现类特点:
- ArrayList,LinkedList:有序,可重复,有索引。
(2)List集合特有的方法:
- List集合因为支持索引,所以多了很多索引操作的独特api,其他Collection的功能List也可以继承。
方法名称 | 说明 |
void add(int index,E element) | 在此集合中的指定位置插入指定元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
import java.util.ArrayList;
import java.util.List;
/**
* List集合特点
* 有序,可重复,有索引
*/
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("java");
list.add("css");
System.out.println(list);//[java, css]
//1.在某个索引位置插入元素
list.add(1,"html");
System.out.println(list);//[java, html, css]
//2.根据索引删除元素,返回被删除元素
System.out.println(list.remove(1));//html
System.out.println(list);//[java, css]
//3.根据索引获取元素:public E get(int index):返回集合中指定位置的元素
System.out.println(list.get(0));//java
//4.修改索引位置处的元素:public E set(int index,E element):返回修改前的数据
System.out.println(list);//[java, css]
System.out.println(list.set(0, "html"));//java
System.out.println(list);//[html, css]
}
}
(3)ArrayList集合底层原理:
- ArrayList底层原理是基于数组实现的:根据索引定位元素块,增删需要做元素的移位操作。
- 第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。
(4)LinkedList的特点:
- 底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首位操作的特有API。
(5)LinkedList集合的特有功能:
方法名称 | 说明 |
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表的最后一个元素 |
public E removeFirst() | 在此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
(6)LinkedList集合实现栈和队列代码:
import java.util.LinkedList;
/**
* LinkedList实现栈和队列结构(双链表)
*/
public class ListDemo01 {
public static void main(String[] args) {
//栈:先进后出
LinkedList<String> stack = new LinkedList<>();
//压栈,入栈 可用stack.push("第1个");或者以下格式
stack.addFirst("第1个");
stack.addFirst("第2个");
stack.addFirst("第3个");
stack.addFirst("第4个");
System.out.println(stack);//[第4个, 第3个, 第2个, 第1个]
//出栈 弹栈 可用stack.pop();或者以下格式
System.out.println(stack.removeFirst());//第4个
System.out.println(stack.removeFirst());//第3个
System.out.println(stack.removeFirst());//第2个
System.out.println(stack);//[第1个]
//队列:先进先出
LinkedList<String> queue = new LinkedList<>();
//入队 可用queue.offerLast();或者以下格式
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);//[1号, 2号, 3号, 4号]
//出队
System.out.println(queue.removeFirst());//1号
System.out.println(queue.removeFirst());//2号
System.out.println(queue.removeFirst());//3号
System.out.println(queue);//[4号]
}
}