目录
ArrayList
有序的(存储和读取的顺序是一致的) 有整数索引 允许重复的
底层数据结构是数组 查询 | 修改快 增删慢
package CeShi;
import java.util.ArrayList;
import java.util.List;
/**
* @author Lzy
* @creat 2021-03-21-11:35
* void add(int index, E element) :将元素添加到index索引位置上
* E get(int index) :根据index索引获取元素
* E remove(int index) :根据index索引删除元素
* E set(int index, E element):将index索引位置的的元素设置为element
* 底层数据结构是数组 查询|修改快 增删慢
*/
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add(0,"hello");
list.add(1,"xiaoli");
System.out.println("原数组: " + list);
list.add(0,"xiaozhang");//添加在索引0处,原有数组总体右移
System.out.println(list);
System.out.println("打印索引2元素: " + list.get(2));
System.out.println("去除索引1元素并打印: " +list.remove(1));
System.out.println("去除索引1后: " + list);
System.out.println("更改索引0元素并打印: " + list.set(0,"zzz"));
System.out.println("最终: " + list);
}
}
List.contains(o),比较list是否包含o
package CeShi;
import java.util.ArrayList;
/**
* @author Lzy
* @creat 2021-03-21-12:58
* 判断元素是否在列表存在 contains()
* 假如List中有n个元素,那么会调用n次o.equals(e),只要有一次o.equals(e)返回了true,
* 那么list.contains(o)返回true,否则返回false
*/
public class ListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("cpp");
list.add("python");
boolean flag = list.contains("php");
System.out.println(flag);
}
}
LinkedList
LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢 访问数据的平均效率低,需要对链表进行遍历
需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置
package CeShi;
import java.util.LinkedList;
/**
* @author Lzy
* @creat 2021-03-21-12:01
* void addFirst(E e) :向链表的头部添加元素
* void addLast(E e):向链表的尾部添加元素
* E getFirst():获取链头的元素,不删除元素
* E getLast():获取链尾的元素,不删除元素
* E removeFirst():返回链头的元素并删除链头的元素
* E removeLast():返回链尾的元素并删除链尾的元素
*
* LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢
*/
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> linked= new LinkedList<>();
linked.add("every");
linked.add("day");
System.out.println("最初链表:" + linked);
linked.addFirst("xiaoli");
System.out.println("在头部添加元素: " + linked);
linked.addLast("you");
System.out.println("在尾部添加元素" + linked);
linked.add(3,"missing");
System.out.println("在索引3前添加元素: " +linked);
System.out.println("获取头元素: " +linked.getFirst() +" 尾元素: "+ linked.getLast());
System.out.println("删除头元素,并返回值: " + linked.removeFirst());
System.out.println(linked);
}
}
总结
总结是截图另一个博主,侵删 传送门 Java 常见面试题之“Arraylist和Linkedlist的区别”