1:集合類,在java語言中的java.util包提供了一些集合類,這些集合類又被稱作容器。
2:區別集合類和數組。(1)數組的長度是固定的,集合的長度是可變的。(2)數組是用來存放基本數據類型的,集合是用來存放對象的引用。
3 : 常用的集合有List集合,Set集合,Map集合。其中List集合和Set集合實現Collection接口。
4:Collection接口是層次結構中的根接口,構成Collection的單位,被稱為元素。Collection接口通常不能直接使用,但是該接口提供了添加和刪除元素的,管理數據的方法。由於List接口和Set接口都實現了Collection接口,因此這些方法對List集合和Set集合是通用的。
5:List集合是列表類型,以線性方式存儲對象,因此可以通過對象的索引來操作對象。
6:List集合中的add(in index,Object obj)方法,用來向集合中的指定索引位置添加對象,集合的索引位置從0開始,其他對象的索引位置相對向后移動一位。
7:List集合中的set(int index,E element)方法用指定的元素替換列表中的指定位置的元素,返回以前在指定位置的元素。
案例如下,創建集合對象,並向集合中添加元素,通過Set方法修改集合中的元素,再通過add()方法向集合中添加元素,都是通過迭代器遍歷集合元素的。
1 package com.ning; 2 3 import java.util.*; 4 5 /** 6 * 7 * @author biexiansheng 8 * 9 */ 10 public class Demo { 11 12 public static void main(String[] args) { 13 String a="A",b="B",c="C",d="D",e="E";//定義要插入集合的字符串對象 14 List<String> list=new LinkedList<String>();//創建List集合 15 list.add(a);//向集合中添加元素 16 list.add(b); 17 list.add(c); 18 Iterator<String> iter=list.iterator();//創建集合的迭代器 19 System.out.println("修改后 前集合 中的元素是:"); 20 while(iter.hasNext()){ 21 System.out.print(iter.next()+" "); 22 } 23 list.set(0,e);//將索引位置為0的對象修改為對象e 24 list.set(2,d);//將索引位置為2的對象修改為對象d 25 Iterator<String> it=list.iterator();//創建將集合對象修改后的迭代器對象 26 System.out.println(); 27 System.out.println("修改后的集合中的元素是:"); 28 while(it.hasNext()){//循環獲取集合中的元素 29 System.out.print(it.next()+" "); 30 } 31 32 33 } 34 35 }
1 package com.ning; 2 3 import java.util.*; 4 5 public class Demo01 { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 String a="A",b="B",c="C",d="D",e="E",apple="apple";//要添加到集合中的對象 10 List<String> list=new ArrayList<String>();//創建List集合對象 11 list.add(a);//對象a的索引位置為0 12 list.add(apple);//對象apple的索引位置為1 13 list.add(b); 14 list.add(apple); 15 list.add(c); 16 list.add(apple); 17 list.add(d); 18 list.remove(1);//remove(int index)用於移除集合中指定索引位置的對象 19 System.out.println("ArrayList集合中的元素:"+list); 20 System.out.println("apple第一次出現的索引位置:"+list.indexOf(apple)); 21 System.out.println("apple最后一次出現的索引位置:"+list.lastIndexOf(apple)); 22 System.out.println("b第一次出現的索引位置:"+list.indexOf(b)); 23 System.out.println("b最后一次出現的索引位置:"+list.lastIndexOf(b)); 24 System.out.println("***********************************"); 25 //System.out.println("get()獲得指定索引位置的對象:"+list.get(0)); 26 27 28 } 29 30 }
此兩句話的使用結果對比顯示:
list.remove(1);//remove(int index)用於移除集合中指定索引位置的對象
System.out.println("get()獲得指定索引位置的對象:"+list.get(0));
1:要使用List集合,通常情況下需要聲明為List類型,然后通過List接口的實現類來對集合進行實例化
2:List集合的實現類常用的有ArrayList與LinkedList
3:ArrayList類,該類實現了可變的數組,允許所有元素,包括null,可以根據索引位置對集合進行快速的隨機訪問。缺點是向指定的索引位置插入對象或者刪除對象的速度比較慢。List<String> list=new ArrayList<String>();
4:LinkedList類,該類采用鏈表結構保存對象,這種結構的優點是便於向集合中插入或者刪除對象,經常需要向集合中插入,刪除對象時,使用LinkedList類實現的List集合的效率較高,但對於隨機訪問集合中的對象,使用LinkedList類實現List集合的效率比較慢
List<String> list=new LinkedList<String>();
5:使用List集合時通常聲明為List類型,可通過不同的實現類來實例化集合。
1 package com.ning; 2 3 import java.util.*; 4 5 public class Demo04 { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 List list=new ArrayList();//創建集合對象 10 int i=(int)(Math.random()*(list.size()-1));//獲得0-2之間的隨機數 11 list.add("a");//向集合中添加元素 12 list.add("b"); 13 list.add("c"); 14 System.out.println("隨機獲取數組中的元素:"+list.get(i));// 15 list.remove(2);//將指定索引位置的元素從集合中移除 16 System.out.println("將索引是'2'的元素從數組中移除后,數組中的元素是:"); 17 for(int j=0;j<list.size();j++){//循環遍歷數組 18 System.out.print(list.get(j)+" "); 19 } 20 21 22 } 23 24 }
1 package day13; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.ListIterator; 6 7 public class Demo03 { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 List list=new ArrayList(); 12 13 list.add("a"); 14 list.add("b"); 15 list.add("c"); 16 list.add("d"); 17 System.out.print(list+" "); 18 System.out.println("集合的長度是:"+list.size()); 19 //list.remove("a"); 20 System.out.println(); 21 System.out.println("刪除后集合的長度是:"+list.size()); 22 System.out.print(list+" "); 23 System.out.println(); 24 for(int i=0;i<list.size();i++){ 25 System.out.print(list.get(i)+" "); 26 } 27 System.out.println(); 28 System.out.println("***********************"); 29 ListIterator it=list.listIterator(); 30 while(it.hasNext()){ 31 String str=(String)it.next(); 32 if("c".equals(str)){ 33 it.add("aaa"); 34 } 35 } 36 System.out.println(list); 37 38 } 39 40 }
此案例的主要是說了一下listIterator的用法,因為好多書上寫的listIterator的解釋很生硬。用來獲得一個包所有對象的ListIterator列表迭代器。其實這個方法的用法就是在迭代的時候可以進行修改List集合。不然報這個錯誤。java.util.ConcurrentModificationException
當方法檢測到對象的並發修改,但不允許這種修改時,拋出此異常。
至此,Collection接口下的List接口學習就差不多了,詳細的還請自己下去參考資料,勤加練習,熟練應用和掌握。