一、Link接口
Link接口是Collection接口的子接口,他有三个子类,ArrayList,Vector,LinkedList,其特有的功能展示:
ListDemo.java
package com.test_02;
import java.util.*;
public class ListDemo {
public static void main(String[] args) {
//List接口是Collection的子接口,他是有序的(存储和取出的元素一至),可重复的。
List list = new ArrayList();
//List接口的三个子对象
// ArrayList array = new ArrayList();//没什么特殊的常用的方法
// Vector vector = new Vector();
//
// LinkedList ll = new LinkedList();
Student s1 = new Student("刘邦",40);
Student s2 = new Student("项羽",22);
Student s3 = new Student("薄姬",18);
Student s4 = new Student("卢馆",22);
list.add(s1);
list.add(s2);
list.add(s3);
//List的特有功能
//添加功能
list.add(1,s4);
//获取指定位置元素,可以加循环实现遍历功能(size())
System.out.println("序号为一:"+list.get(1));
//删除指定位置元素,返回值是被删除元素的值
System.out.println("被删除元素:"+list.remove(2));
//修改元素,返回被修改的元素
System.out.println("被修改元素,修改为s3中值:"+list.set(1,s3));
//特有遍历迭代器ListIterator,他是Iterator的子类对象,用法一样
// Iterator it = list.iterator();
// while(it.hasNext()){
// Student s = (Student)it.next();
// System.out.println(s);
// }
ListIterator it = list.listIterator();
while(it.hasNext()){
Student s = (Student)it.next();
System.out.println(s);
//特有的功能
//previous();往前遍历,但要先正向遍历,才能逆向遍历
//hasPrevious();判断往前是否有元素
}
}
}
上面代码用到的Student对象:Student.java
package com.test_02;
public class Student {
public String name;
public int age;
public Student(){}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
二、List的三个子类对象
1.其中ArrayList没有特有的常用对象,底层是数组,查询快,增删慢,线程不安全,效率高,最常用
2.Vector有其特有的添加功能和获取功能,底层是数组,查询快,增删慢,线程安全,不常用
3.LinkList也有其特有的添加,获取,删除功能,底层是链表,查询慢,增删快,线程不安全,效率高。
查询多用:ArrayList,增删多用:LinkedList
VectorDemo.java
package com.test_02;
import java.util.Enumeration;
import java.util.Vector;
public class VectorDemo {
public static void main(String[] args) {
Vector v = new Vector();
//添加功能,也可用简单的add()
v.addElement("hello");
v.addElement("java");
//遍历
for(int x=0;x<v.size();x++) {
//获取功能,也可用简单的get()
String s = (String)v.elementAt(x);
System.out.println(s);
}
//迭代器,也可用简单的Iterator iterator(),hasnext(),next()
Enumeration en = v.elements();
while(en.hasMoreElements()) {
String s = (String)en.nextElement();
System.out.println(s);
}
}
}
LinkedListDemo.java
package com.test_02;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.add("hello");
ll.add("world");
ll.add("java");
//添加功能,首尾添加,多个是模拟栈先进后出
ll.addFirst("first");
ll.addFirst("first1");
ll.addFirst("first2");
ll.addLast("end");
System.out.println(ll);
//获取功 能,首尾获取
System.out.println("first:"+ll.getFirst());
System.out.println("end:"+ll.getLast());
//删除功能,首尾删除,返回值是删除的元素
System.out.println("Delfirst:"+ll.removeFirst());
System.out.println("Delend:"+ll.removeLast());
System.out.println(ll);
}
}