一、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);
}
}