①. 元素都带有索引
②. List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引
我有一个集合: List<String> list=new ArrayList<>();
里面有三个元素:list.add("hello");list.add("world");list.add("java");
遍历集合,得到每一个元素,看有没有 " world "这个元素,如果有,我就添加一个" javaEE" 元素

@Test
public void fun5(){
List<String> list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("java");
Iterator<String> iterator=list.iterator();
for (int i = 0; i < list.size(); i++) {
String s=list.get(i);
if(s.equals("world")){
list.add("javaEE");
}
}
/* while(iterator.hasNext()){
String s=iterator.next();
if(s.equals("world")){
list.add("javaEE"); //遍历的同时在修改元素,并发修改ConCurrentModificationException
}
}*/
System.out.println(list);
}

@Test
public void fun6(){
List<String>list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("javeEE");
//通过list集合的listItrator()方法得到
ListIterator<String> lit=list.listIterator();
System.out.println("正向遍历:");
while(lit.hasNext()){
String s=lit.next();
System.out.print(s+"\t");//hello world javeEE
}
System.out.println();
System.out.println("逆向遍历:");//一般很少运用
while(lit.hasPrevious()){
String s=lit.previous();
//要是没有正向遍历直接逆向遍历,指针在0的位置,向上找没有元素,所以出打印空
System.out.print(s+"\t");//javeEE world hello
}
①. ArrayList在所有E的地方我们使用引用数据类型替换即可(举例:ArrayList、ArrayList)
②. 可调节大小的数组实现,< E >: 是一种特殊的数据类型,范型
③. ArrayList构造和增删改查
//ArrayList array=new ArrayList<>();
ArrayList<String> array = new ArrayList<String>();
//public boolean add(E e)
array.add("AAA");
array.add("BBB");
array.add("CCC");
//public void add(int index,E element)
array.add(0,"BeforeAAA");
System.out.println(array);
@Test
public void fun8(){
List<String>list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("xiaozhi");
//遍历集合的通用格式
//E get(int i)
for(int i=0;i<list.size();i++){
String s=list.get(i);
System.out.print(s+"\t");
}


1.Vector 和 ArrayList 的区别
Vector 是线程安全的,效率低
ArrayList 是现成不安全的,效率高
共同点:都是数组实现的,增删慢,改查快
2.ArrayList 和 LinkedList的区别
ArrayList 底层是数组结果,查询和修改快
linkedList 底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的