List接口是Collection接口的子接口,List有一個重要的實現類--ArrayList類,List中的元素是有序排列的並且可重複,因此被稱爲是序列。java
List能夠精確的控制每一個元素的插入位置,或刪除某個位置元素,它的實現類ArrayList底層是由數組實現的。數組
List中有增刪改查的方法,咱們能夠經過例子演示:數據結構
咱們經過對學生選課,來演示List中對課程增刪改查的方法this
1 /** 2 * 課程類 3 * @author lenovo 4 * 5 */ 6 public class KeCheng { 7 8 public String id; 9 10 public String name; 11 12 public KeCheng(String id,String name){ 13 this.id = id; 14 this.name = name; 15 } 16 17 }
建立一個學生類spa
1 import java.util.HashSet; 2 import java.util.Set; 3 4 /** 5 * 學生類 6 * @author lenovo 7 * 8 */ 9 public class Student { 10 11 public String id; 12 13 public String name; 14 15 public Set kecheng; 16 17 public Student(String id,String name){ 18 this.id = id; 19 this.name = name; 20 this.kecheng = new HashSet(); 21 } 22 23 }
建立一個備選課程的類設計
1 /** 2 * 備選課程類 3 * @author lenovo 4 * 5 */ 6 public class ListTest { 7 8 //用於存放備選課程的List 9 public List beixuan; 10 11 public ListTest(){ 12 this.beixuan = new ArrayList(); 13 } 14 }
可使用List中add方法添加課程code
1 /* 2 * 用來往beixuan裏添加備選課程的方法 3 */ 4 public void kcAdd(){ 5 6 //建立一個課程的對象,調用add方法,添加到備選課程的List中 7 KeCheng kc = new KeCheng("1","數據結構"); 8 beixuan.add(kc); 9 10 KeCheng kc2 = new KeCheng("2","C語言"); 11 beixuan.add(0, kc2); 12 13 KeCheng[] kcArr = {new KeCheng("3","大學語文"),new KeCheng("4","線性代數")}; 14 beixuan.addAll(Arrays.asList(kcArr)); 15 16 KeCheng[] kcArr2 = {new KeCheng("5","藝術設計"),new KeCheng("6","計算機基礎")}; 17 beixuan.addAll(2, Arrays.asList(kcArr2)); 18 19 } 20
使用get方法取出指定位置上的內容,並用for循環遍歷出課程的內容對象
1 /* 2 * 使用for循環遍歷課程的方法 3 */ 4 public void getKC(){ 5 int size = beixuan.size(); 6 System.out.println("使用for遍歷課程:"); 7 for (int i = 0; i < size; i++) { 8 KeCheng kc = (KeCheng) beixuan.get(i); 9 System.out.println("課程:"+kc.id+":"+kc.name+";"); 10 } 11 }
遍歷List的內容,除了使用for循環外,還可使用迭代器、foreach等方法blog
1 /* 2 * 使用Iterator迭代器遍歷課程 3 */ 4 public void testIterator(){ 5 Iterator it = beixuan.iterator(); 6 System.out.println("使用Iterator遍歷課程:"); 7 while(it.hasNext()){ 8 KeCheng kc = (KeCheng) it.next(); 9 System.out.println("課程:"+kc.id+":"+kc.name+";"); 10 } 11 12 } 13 14 /* 15 * 使用for each遍歷課程 16 */ 17 public void testForeach(){ 18 System.out.println("使用for each遍歷課程:"); 19 for(Object obj : beixuan){ 20 KeCheng kc = (KeCheng)obj; 21 System.out.println("課程:"+kc.id+":"+kc.name+";"); 22 } 23 } 24
修改List中的元素,可使用set方法接口
1 /* 2 * 使用set方法添加課程 3 */ 4 public void testModify(){ 5 beixuan.set(0, new KeCheng("7","毛概")); 6 }
刪除List中的元素有兩種方法,一是使用remove方法
1 /* 2 * 使用remove方法刪除課程 3 */ 4 public void testRemove(){ 5 KeCheng kc = (KeCheng) beixuan.get(0); 6 System.out.println("我是課程:"+kc.id+":"+kc.name+";即將被刪除"); 7 boolean b = beixuan.remove(kc); 8 if(b){ 9 System.out.println("成功刪除課程"); 10 testForeach(); 11 } 12 }
還可使用removeAll方法刪除一個課程類型的數組
1 /* 2 * 使用removeAll方法刪除課程 3 */ 4 public void testRemoveAll(){ 5 System.out.println("即將刪除4和5位置上的課程"); 6 KeCheng[] kc = {(KeCheng) beixuan.get(4),(KeCheng) beixuan.get(5)}; 7 beixuan.removeAll(Arrays.asList(kc)); 8 System.out.println("課程刪除成功"); 9 testForeach(); 10 }