一、List的认识
List是Collection的子接口
意味着Collection下面所有的方法 List都是可以使用的,并且还有自己的方法,List比Collection 方法多
List接口存储数据的有什么特点:
有序的可重复的、
有序:添加顺序和保存顺序一致。取数据的时候,通过for循环的索引下标
可重复的:元素可以是相同的
二、List的常用方法
增:
add(int index,E e):指定下标添加指定的元素
addAll(Collection <? extends E> c):添加一个指定的集合,尾插法
addAll(int index,Collection<?extends E> c:在指定位置添加指定的一个集合)
删:
remove(int index);删除指定下标上的元素
remove(Object o):删除指定元素
改:
E set(int index, E e);依据指定的下标,替换指定下标元素
查:
E get(int index);获取指定下标的元素
int indexOf(Object obj);查找指定元素的位置
List<E> subList(int startIndex, int endIndex);获取子List集合(要头不要尾)
示例
import java.util.ArrayList;
import java.util.List;
public class Demo3 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("一哈");
list.add("二哈");
list.add("三哈");
list.add("四哈");
list.add("五哈");
System.out.println(list);
list.add(2,"金毛");
System.out.println(list);
ArrayList<String> list2 = new ArrayList<>();
list2.add("大黄");
list2.add("中黄");
list2.add("小黄");
System.out.println(list2);
list.addAll(1,list2);
System.out.println(list);
list.remove(0);
System.out.println(list);
list.remove("大黄");
System.out.println(list);
list.set(0,"中华田园犬");
System.out.println(list);
System.out.println(list.get(0));
System.out.println(list.indexOf("中华田园犬"));
List<String> list1 = list.subList(1, 3);
System.out.println(list1);
}
}
三、迭代器
ListIterator< E > listlterator();
常用的方法:
boolean hasNext();
E next();
void remove();迭代器循环里不能使用对象移除数据,只能使用迭代器移除!!!!!!
void add(E e):在当前迭代器中添加数据。注意是根据迭代器的指针指向进行添加的
void set(E e);修改当前迭代器指向位置的那个元素
示例:
import java.util.ArrayList;
import java.util.ListIterator;
public class Demo4 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("红旗渠");
list1.add("荷花");
list1.add("利群");
list1.add("散花");
list1.add("华子");
ListIterator<String> listIterator = list1.listIterator();
System.out.println(listIterator.hasNext());
System.out.println(listIterator.next());
System.out.println(listIterator.nextIndex());
list1.add("牡丹");
System.out.println(list1);
}