List集合
概念
java.util.List接口 extends Collection接口
特点
1、存储有序
2、有索引
3、允许重复元素
List接口带索引的方法(特有)
-public void add(int index,E element):将指定的元素添加到该集合中的指定位置上
-public E get(int index):返回集合中指定位置的元素
-public E remove(int index):移除列表中指定元素,返回被移除的元素
-public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回更新前的元素
注意:
操作索引的时候,一定要防止索引越界异常
代码讲解
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) {
//创建一个List集合对象(多态)
List<String> list = new ArrayList<>();
//使用add方法往集合中添加元素
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
//打印集合
System.out.println(list);//[a, b, c, d, a] 因为重写了toString方法,打印的就不是地址而是集合中的元素
//public void add(int index,E element):将指定的元素添加到该集合中的指定位置上
list.add(3,"Love");//[a, b, c, Love, d, a]
// public E remove(int index):移除列表中指定元素,返回被移除的元素
list.remove(3);//[a, b, c, d, a]
//public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回更新前的元素
list.set(4,"A");//[a, b, c, d, A]
//List集合遍历de方法
System.out.println("---------------1---------------");
//第一种:普通for循环
for (int i = 0; i < list.size(); i++) {
//public E get(int index):返回集合中指定位置的元素
String s = list.get(i);
System.out.println(s);
}
System.out.println("---------------2---------------");
//第二种:使用迭代器Iterator
Iterator<String> it = list.iterator();//调用集合中的iterator()方法创建迭代器对象
while (it.hasNext()){//判断是否有下一个元素
String s = it.next();//获取下一个元素
System.out.println(s);
}
System.out.println("---------------3---------------");
//第三种:使用增强for
for (String s : list) {
System.out.println(s);//s相当于arr[i]
}
//第四种:使用列表迭代器 ListIterator
System.out.println("---------------4---------------");
//正向遍历
ListIterator<String> li = list.listIterator();
while (li.hasNext()){
String next = li.next();
System.out.println(next);
}
//逆向遍历(必须先得正向遍历才能使用)
System.out.println("----------");
while (li.hasPrevious()){
String previous = li.previous();
System.out.println(previous);
}
System.out.println("---------------5---------------");
//第五种:数组,使用LIst集合中toArray方法
Object[] obj = list.toArray();
for (Object s:obj) {
System.out.println(s);
}
}
}