List系列集合特点:有序,可重复,有索引
ArrayList:有序,可重复,有索引
LinkedList:有序,可重复,有索引
(底层实现不同!适合的场景不同!)
List集合的特有方法
1,创建一个ArrayList集合对象(有序,可重复,有索引)
java
List<String> list = new ArrayList<>();//经典代码 List是接口
list.add("简隋英");
list.add("李玉");
list.add("李玉");
list.add("邵群");
System.out.println(list);//[简隋英,李玉,李玉,邵群]
2,public void add(int index , E element):在某个索引位置插入元素
java
list.add(2,"李程秀");
System.out.println(list);//[简隋英,李玉,李程秀,李玉,邵群]
3,public E remove(int index):根据索引删除元素,返回被删除元素
java
System.out.println(list.remove(2));//李程秀
System.out.println(list);//[简隋英,李玉,李玉,邵群]
4,public E get(int index):返回集合中指定位置的元素
java
System.out.println(list.get(0));//简隋英
5,public E set(int index , E element):修改索引位置处的元素,修改成功后,会返回原来的数据
java
System.out.println(list.set(2, "李程秀"));
System.out.println(list);//[简隋英,李玉,李程秀,邵群]
List集合支持的遍历方式
1,for循环(因为List集合有索引)
java
import java.util.*;
public class Work1 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();//经典代码 List是接口
list.add("兰波");
list.add("白楚年");
list.add("陆言");
list.add("毕揽星");
//System.out.println(list);
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
2,迭代器
java
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
3,增强for循环
java
for (String s : list) {
System.out.println(s);
}
4,Lambda表达式
java
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
}
}
ArrayList集合的底层原理
基于数组实现的
查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同
删除效率低:可能需要把后面很多的数据进行前移
添加效率极低:可能需要把后面很多的数据后移,再添加元素;或者也可能需要进行数组的扩容
ArrayList集合适合的应用场景
LinkedList集合的底层原理
基于双链表实现的
LinkedList的应用场景之一:可以用来设计队
java
import java.util.*;
public class Work1 {
public static void main(String[] args) {
//创建一个队列
LinkedList<String> queue = new LinkedList<>();
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);
//出队操作
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
}
}
LinkedList的应用场景之一:可以用来设计栈
java
import java.util.*;
public class Work1 {
public static void main(String[] args) {
LinkedList<String> stack = new LinkedList<>();
//压栈(push)
stack.addFirst("第1颗子弹");
stack.addFirst("第2颗子弹");
stack.addFirst("第3颗子弹");
stack.addFirst("第4颗子弹");
System.out.println(stack);
//出栈(pop)
System.out.println(stack.removeFirst());
System.out.println(stack.removeFirst());
System.out.println(stack);
}
}