常用的方法
java
package MyApi.search.myCollection;
import java.util.ArrayList;
import java.util.List;
public class listdemo01 {
public static void main(String[] args) {
//1.创建一个集合
List<String> list=new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
//在指定位置插入元素
//原来索引上的元素会依次往后移
list.add(1,"dddd");
//删除指定索引处的元素,返回被删除的元素
String remove = list.remove(0);
System.out.println(remove);
//修改指定元素
String set = list.set(0, "bbbb");
System.out.println(set);
//通过索引得到集合元素
String s = list.get(0);
System.out.println(s);
}
}
遍历方式
java
package MyApi.search.myCollection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;
public class listdemo02 {
public static void main(String[] args) {
//创建集合并添加奥元素
List<String> list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//1.迭代器遍历
/* Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}*/
//2.增强for
/*for (String s : list) {
System.out.println(s);
}*/
//3.lamdba
/* list.forEach (s-> System.out.println(s)
);*/
//4.普通for
/* for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}*/
//5.列表迭代器
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext()){
String next = iterator.next();
if("bbb".equals(next)){
iterator.add("qqq");
}
System.out.println(next);
}
}
}
栈
特点:后进先出,先进后出
队列
特点:先进先出,后进后出
数组
特点:
-
查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同。
-
删除效率低:要将原始数据删除,同时后面每个数据前移。
-
添加效率低:添加位置后的每个数据后移,在添加元素。
链表
链表中的节点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。
链表查询速度慢,无论查询那个数据都要从头开始找。
链表的增删相对快。
ArrayList集合底层原理
-
ArrayList底层是数据结构的
-
利用空参创建的集合,在底层创建一个默认长度为0的数组
-
添加第一个元素时,底层会创建一个新的长度为10的数组
-
存满时,会扩容1.5倍
-
如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准。
LinkedList集合
- 底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的。