標籤:一個 AC 順序 元素對象 rem 使用 linked move 強制類型轉換
JAVA集合架構
Collection介面:儲存一組不唯一、無序的對象
List介面儲存一組不唯一、有序(插入順序)的對象
Set介面儲存一組唯一、無序的對象.
List
在樣本中,首先建立了狗狗對象,並通過Set賦值。
//建立dog對象 Dog dog1=new Dog(); dog1.setName("小草1"); dog1.setStrain("拉布拉多"); Dog dog2=new Dog(); dog2.setName("小花2"); dog2.setStrain("泰迪");
然後通過List建立集合對象:
List<Dog> list=new ArrayList<Dog>();
list.add(dog1);
list.add(dog2);
list.size()方法可以判斷實際元素的個數,把值賦值給一個變數並輸出:
int num=list.size();System.out.println(num);
可以通過list.remove();移除數組中的元素,括弧內可以是元素下標,也可以元素對象值。
輸出集合中的元素的方式有3種,分別是:
1、通過for迴圈遍曆輸出集合中的元素
2、使用foreach,增強for迴圈輸出集合中的元素
3、使用迭代器迴圈輸出集合中的元素
首先是for迴圈:
for (int i = 0; i < list.size(); i++) { //取出集合中的每一個元素 Object object=list.get(i); //轉化為真實的子類對象(Dog) if(object instanceof Dog){ //強制類型轉換 Dog dog=(Dog)object; //輸出狗的資訊 System.out.println(dog); } }
普通for迴圈遍曆集合需要注意的是,在迴圈輸出前,需要使用instanceof關鍵字轉化為真實的子類對象,然後強制類型轉換,輸出狗的資訊。
foreach迴圈
foreach迴圈總得來說比較方便,不可忽視的是仍然需要使用instanceof關鍵字進行判斷。
for (Object object : list) { if(object instanceof Dog){ //強制類型轉換 Dog dog=(Dog)object; //輸出狗的資訊 System.out.println(dog); } }
迭代器的使用:
使用Iterator,首先判斷集合中是否有元素,進而得到集合中的每一個值。
Iterator its=list.iterator(); while (its.hasNext()) { Object obj = its.next(); System.out.println(obj); }
程式最終的輸出結果為:
狗的名字 狗的品種小班3 哈士奇小草1 拉布拉多
LinkedList集合操作
LinkedList list=new LinkedList(); list.add(staff1); list.add(staff2);
list.addFirst(1000);//添加到列表的第一個位置list.removeFirst();//移除第一個list.removeLast();//移除最後一個list.push("222");//增加元素list.poll();//擷取並移除第一個
ArrayList實現了長度可變的數組,在記憶體中分配連續的空間。遍曆元素和隨機訪問元素的效率比較高。
LinkedList的特殊方法:
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一個元素
Object getLast() 返回列表中的最後一個元素
Object removeFirst() 刪除並返回列表中的第一個元素
Object removeLast() 刪除並返回列表中的最後一個元素
ArrayList和LinkedList分別在何時使用?
ArrayList:
遍曆元素和隨機訪問元素的效率比較高
插入、刪除等操作頻繁時效能低下
LinkedList
插入、刪除元素時效率較高
尋找效率較低
集合泛型的樣本:
//要求放入INT類型的資料 Integer List<Integer> list=new ArrayList<Integer>();
valueOf方法,把數字轉換成字串
list1.add(String.valueOf(1000));
泛型要求添加資料,必須是指定的資料類型。
JAVA集合架構