List接口:
java.util.List接口 extends java.util.Collection接口 ,因此Collection中的方法和特性它都具有
List接口特点:
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) 用指定的元素替换集合中指定位置的元素
注意:
1.List是一个接口,无法直接创建对象使用,需要使用多态
2.集合索引从0开始
3.进行索引操作时,需要注意索引越界,会报错
public class ListDemo01 {
public static void main(String[] args) {
// 创建一个List集合对象,无法直接创建对象使用,需要使用多态
// List list = new List<>();错误写法
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
// System.out.println(list);//输出结果:[1, 2, 3, 4]
// public void add(int index,E element) 将指定元素添加到指定索引位置
list.add(0, 8);// 将8添加到集合第一个位置,索引从0开始
list.add(2, 3);// 将3添加到集合第三个位置,范围是增加了上一条语句元素的集合,而不是最初的集合
// System.out.println(list);//输出结果:[8, 1, 3, 2, 3, 4] 容许存储重复元素
/*
* public E get(int index) 获取指定索引位置的元素 可以通过此方法进行集合的遍历 至此,遍历List集合有三种方式:
* 1.迭代器 2.增强for循环 3.list特有get()方法
*/
// 获取单个元素
int a = list.get(0);
System.out.println(a);// 输出结果:8
// 1.list特有get()方法,对List集合进行遍历
for (int i = 0; i < list.size(); i++) {
int b = list.get(i);
System.out.print(b + " ");
} // 输出结果:8 1 3 2 3 4
// 2.使用迭代器进行遍历
Iterator<Integer> it1 = list.iterator();
while (it1.hasNext()) {
int c = it1.next();
System.out.print(c + " ");
} 输出结果:8 1 3 2 3 4
// 3.增强for循环
for (int i : list) {
System.out.print(i + " ");// 输出结果:8 1 3 2 3 4
}
// public E remove(int index) 删除指定位置的元素,返回值为删除的元素
System.out.print(list);// 输出结果:[8, 1, 3, 2, 3, 4]
int d = list.remove(3);// 移除第四个位置的元素,并返回此元素
System.out.println(list);// 输出结果:[8, 1, 3, 3, 4]
// public E set(int index,E element) 用指定的元素替换集合中指定位置的元素
int e = list.set(0, 9);// 将第一个位置的元素换成9,并返回被替换的元素
System.out.println(e);// 输入结果:8
// 注意异常
list.clear();// 清空集合
int f = list.get(0);// 抛出异常:IndexOutOfBoundsException
}
}
ArrayList集合:
java.util.ArrayList implements java.util.List List里的方法都可使用
底层是一个数组,查询数据快,增删数据慢
ArrayList集合常用方法:
public void add(int index,E element) 将指定元素添加到指定索引位置
public E get(int index):从集合中获取指定索引位置的元素,返回值为获取的元素
public E remove(int index) 删除指定位置的元素,返回值为删除的元素
public E set(int index,E element) 用指定的元素替换集合中指定位置的元素
public int size() 获取集合元素长度
public class ListDemo02 {
public static void main(String[] args) {
ArrayList<Integer> alist = new ArrayList<>();
alist.add(1);
alist.add(2);
alist.add(3);
System.out.println(alist);//输出结果:[1, 2, 3]
// public void add(int index,E element) 将指定元素添加到指定索引位置
alist.add(1, 6);
System.out.println(alist);//输出结果:[1, 6, 2, 3]
//public E get(int index):从集合中获取指定索引位置的元素,返回值为获取的元素
int a = alist.get(3);//获取第四个位置的元素
System.out.println(a);//输出结果:3
// public E remove(int index) 删除指定位置的元素,返回值为删除的元素
int b = alist.remove(2);//删除第三个位置的元素
System.out.println(b);//输出结果:2
System.out.println(alist);//输出结果:[1, 6, 3]
// public E set(int index,E element) 用指定的元素替换集合中指定位置的元素
int c = alist.set(0, 8);//将第一个位置替换成8,返回被替换的元素
System.out.println(c);//输出结果:1
System.out.println(alist);//输出结果:[8, 6, 3]
//public int size() 获取集合元素长度
int size = alist.size();
System.out.println(size);//输出结果:3
}
}
LinkedList集合:
java.util.LinkedList implements java.util.List
List里的方法都可使用,底层是一个链表。增删快,查询慢
LinkedList特有方法:
public void addFirst(E e) 在集合的开头插入指定元素
public void push()将元素推送到由此列表表示的堆栈上,等价于addFirst()
public void addLast(E e) 在集合的末尾插入指定元素
public E removeFirst() 删除集合中的第一个元素,返回被删除的元素
public E pop() 从此列表表示的堆栈中弹出一个元素,等价于removeFirst()
public E removeLast() 删除集合中的最后一个元素,返回被删除的元素
public E getFirst() 返回集合中的第一个元素
public E getLast() 返回集合中的最后一个元素
public class ListDemo03 {
public static void main(String[] args) {
LinkedList<Integer> llist = new LinkedList<>();
llist.add(1);
llist.add(2);
llist.add(3);
llist.add(3);
System.out.println(llist);//输出结果:[1, 2, 3, 3]
//public void addFirst(E e) 在集合的开头插入指定元素
// llist.addFirst(8);
// public void push()将元素推送到由此列表表示的堆栈上,等价于addFirst()
llist.push(8);
System.out.println(llist);//输出结果:[8, 1, 2, 3, 3]
// public void addLast(E e) 在集合的末尾插入指定元素
llist.addLast(6);
System.out.println(llist);//输出结果:[8, 1, 2, 3, 3, 6]
// public E removeFirst() 返回集合中的第一个元素
// int a = llist.removeFirst();
// public E pop() 从此列表表示的堆栈中弹出一个元素,等价于removeFirst()
int a = llist.pop();
System.out.println(a);//输出结果:8
System.out.println(llist);//输出结果:[1, 2, 3, 3, 6]
// public E removeLast() 删除集合中的最后一个元素,返回被删除的元素
int b = llist.removeLast();
System.out.println(b);//输出结果:6
System.out.println(llist);//输出结果:[1, 2, 3, 3]
// public E getFirst() 返回集合中的第一个元素
int c = llist.getFirst();
System.out.println(c);//输出结果:1
//public E getLast() 返回集合中的最后一个元素
int d = llist.getLast();
System.out.println(d);//输出结果:3
}
}
Vector集合:自JDK1.0就有,是所有单列集合的初始,从JDK1.2版本之后才出现Collection的所有集合,JDK1.2以后Vector 实现了List接口, 因为性质与ArrayList集合差不多,被ArrayList集合取代,但是继承List接口,所有方法仍可使用
Vector集合特殊方法:
public void addElement(E e) 将指定的组件添加到此向量的末尾,将其大小增加1(JDK1.0时)
public Enumeration elements() 返回此向量的组件的枚举。(JDK1.0时的迭代器)
public boolean hasMoreElements() 测试此枚举是否包含更多元素。
public E nextElement() 如果此枚举对象至少有一个要提供的元素,则返回此枚举的下一个元素。
public class ListDemo04 {
public static void main(String[] args) {
Vector<Integer> v1 = new Vector<>();
v1.addElement(1);
v1.addElement(2);
v1.addElement(3);
System.out.println(v1);//输出结果:[1, 2, 3]
//遍历
Enumeration<Integer> e = v1.elements();
while(e.hasMoreElements()){
int a = e.nextElement();
System.out.print(a+" ");//输出结果:1 2 3
}
}
}