List
List接口通常表示一个列表,可随机访问包含的元素,元素是有序的,可在任意位置增、删元素,不管访问多少次,元素位置不变,允许重复元素。
List特有的方法:
/**
* 删除指定的元素
*/
public static void fun4() {
List l1 = new ArrayList();
l1.add("a");
l1.add("b");
l1.add("c");
l1.add("d");
l1.remove(3);
System.out.println(l1);
}
/**
* 获取指定索引下的元素, 同样不能越界
*/
public static void fun3() {
List l1 = new ArrayList();
l1.add("a");
l1.add("b");
l1.add("c");
l1.add("d");
Object object = l1.get(3);
System.out.println(object);
}
/**
* 指定索引替换元素, 不能超出集合长度的索引
*/
public static void fun2() {
List l1 = new ArrayList();
l1.add("a");
l1.add("b");
l1.add("c");
l1.add("d");
l1.set(3, "ww");
System.out.println(l1);
}
/**
* 指定索引添加元素, 不能越界
*/
private static void fun1() {
List l1 = new ArrayList();
l1.add("a");
l1.add("b");
l1.add("c");
l1.add("d");
// 向指定索引添加元素
// 不能越界
l1.add(4, "w");
System.out.println(l1);
}
- 数组实现
- 特点:查询快 增删慢
- 查询: 依赖下表查询
- 增删: 增加时:把要插入位置后面所有元素, 先后移动一位
- 删除时: 向前移动一位
数组在创建的时候, 默认10个位置, 要存11个元素, 在创建新数组, 长度是原来的1.5倍
链表实现
- 特点:查询慢 增删快
- 1.链表中的元素, 保存了上一个元素和下一个元素的地址, 通过这个地址可以找到上一个元素 和下一个元素
- 2.在进行查找的时候, 先判断初 要查找的元素 是距离头近还是尾近
- 3.例如头近, 就从头位置一个一个向下查找(通过保存的地址)
4.增删时:直接找到插入的位置 重新保存下 上一个元素和下一个元素的地址 就可以, 后面的元素地址都不进行移动
LinkedList特有的方法
/**
* 获取开头结尾元素或 指定下标元素
*/
public static void fun7() {
LinkedList l1 = new LinkedList();
l1.add("a");
l1.add("b");
l1.add("c");
System.out.println(l1.getFirst());
System.out.println(l1.getLast());
System.out.println(l1.get(1));
}
/**
* 从开开头结尾添加元素
*/
public static void fun6() {
LinkedList l1 = new LinkedList();
l1.add("a");
l1.add("b");
l1.add("c");
l1.addFirst("d");
l1.addLast("e");
}
vector特有的方法(vector在jdk1.0出现 不常使用)
/**
* vector特有的枚举遍历
*/
public static void fun5() {
Vector v1 = new Vector();
v1.add("a");
v1.add("b");
v1.add("c");
v1.add("d");
Enumeration e1 = v1.elements();
while (e1.hasMoreElements()) {
System.out.println(e1.nextElement());
}
}