List集合
List集合
特点
- 有序:存储和取出的元素顺序一致
- 有索引:可以通过索引操作元素
- 可重复:存储的元素可以重复
List特有的方法
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
// void add(int index, E element) 在此集合中的指定位置插入指定的元素
// 原来位置的元素会往后移
list.add(0, "qqq");
// E remove(int index) 删除指定索引处的元素,返回被删除的元素
// list集合中有两个删除的方法
// 第一个 删除指定的元素,返回值表示当前元素是否删除成功,该方法是父类Collection的方法
// 第二个 删除指定索引的元素,返回值表示实际删除的元素
String s = list.remove(0);
// E set(int index, E element) 修改指定索引处的元素,返回被修改的元素
// 被替换的元素就不存在了
list.set(0,"qqq");
// E get(int index) 返回指定索引处的元素
String s1 = list.get(0);
}
数据结构
栈:数据先进后出的模型。详情看栈
队列:数据先进先出的模型。详情看队列
数组:查询数据通过地址值和索引定位,查询任意数据耗时相同,查询速度快。删除、添加慢。相关连接:顺序表
链表:结点(地址,数据)。查询慢,增删快。
- 单向链表:结点(数据,后结点地址)
- 双向链表:结点(前结点地址,数据,后结点地址)
相关连接链表
ArrayList
底层数据结构是数组,查询快,增删慢
LinkedList
底层是链表结构,查询慢,增删快
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
// public void addFirst(E e) 在该列表开头插入指定的元素
list.addFirst("qqq");
// public void addLast(E e) 将指定的元素追加到此列表的末尾
list.addLast("www");
// public E getFirst() 返回此列表中的第一个元素
String first = list.getFirst();
// public E getLast() 返回此列表中的最后一个元素
String last = list.getLast();
// public E removeFirst() 从此列表中删除并返回第一个元素
String s = list.removeFirst();
// public E removeLast() 从此列表中删除并返回最后一个元素
String s1 = list.removeLast();
}