日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum

發布時間:2023/12/4 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、泛型數組列表ArrayList

1.在Java中,ArrayList類可以解決運行時動態更改數組的問題。ArrayList使用起來有點像數組,但是在添加或刪除元素時,具有自動調節數組容量的功能,而不需要為此編寫任何代碼。

對數組列表實施插入和刪除操作效率比較低,對于小型數組來說可以接受。但是如果數組存儲的元素數比較多,又經常需要在中間位置插入、刪除元素,就應該考慮使用鏈表。

ArrayList是一個采用類型參數(type parameter)的泛型類(generic class)。為了指定數組列表保存的元素對象類型,需要用一對尖括號將類名括起來加在后面。

例如:構造和保存一個Employee對象的數組列表

ArrayList staff = new ArrayList<>();

2.ArrayList類的一些方法

(1)使用add方法可以將元素添加到數組列表中中

staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));

數組列表管理著對象引用的一個內部數組。最終,數組的全部空間有可能被用盡。這就顯示出數組列表的優點:如果調用add方法且內部數組已經滿了,數組列表就將自動地創建一個更大的數組,并將所有的對象從較小的數組中拷貝到較大的數組中。

如果已經明確數組存儲的元素的數量,可以在add前調用ensureCapacity方法:這個方法調用將分配一個包含100個對象的內部數組。

staff.ensureCapacity(100);

也可以在構造數組列表的時候就指定初始容量:

ArrayList staff = new ArrayList<>(100);

(2)使用size方法將返回數組列表中包含的實際元素數目:打印結果:3

staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));

staff.add(new Employee("Harry Hacker", 50000, 1989, 10, 1));

staff.add(new Employee("Tony Tester", 40000, 1990, 3, 15));

System.out.println(staff.size());

(3)使用trimToSize方法將存儲區域的大小調整為當前元素數量所需要的存儲空間數目,垃圾回收器將回收多余的存儲空間。一旦整理了數組列表的大小,添加新元素就需要花時間再次移動存儲塊,所以應該在明確不會添加任何元素時,再調用這個方法。

staff.trimToSize();

(4)使用get和set方法實現訪問或改變數組列表中元素的操作:數組列表訪問元素語法較為復雜

staff.set(i, Harry); // 等價于對數組a的元素賦值:a[i] = Harry;

staff.get(i); // 等價于獲取數組a下標為i的元素:Employee e = a[i]

(5)使用toArray方法將數組列表中的元素拷貝到一個數組中:常用的數組列表使用方法,既可以靈活地擴展數組,又可以方便地訪問數組元素

// 第一步:創建一個數組列表,并添加所有的數組元素

ArrayList list = new ArrayList<>();

while(...){

x = ...;

list.add(x);

}

// 第二步:將數組列表中的元素拷貝到數組中便于訪問

X[] a = new X[list.size()];

list.toArray(a)

(6)使用帶索引的add方法在數組列表的中間插入元素:

int n = staff.size()/2;

staff.add(n, e);

(7)使用remove方法移除索引位置的元素并返回:

Employee e = staff.remove(n)

(8)使用for each循環遍歷數組列表:

for(Employee e : staff)

e.raiseSalary(5);

3.類型化與原始數組列表的兼容性

假如有下面這個沒有使用類型參數的類:可以看到,這里的ArrayList沒有使用泛型,如果和這些代碼交互就會有一些問題。

public classEmplayeeDB{public voidupdate(ArrayList list){..}publicArrayList find(String query){...}

}

可以將一個類型化的數組列表傳遞給update方法,而不需要進行任何類型轉換:即只要是ArrayList類對象,不管是什么具體類型化都可以編譯通過。

ArrayList staff =...;

employeeDB.update(staff);

但是,如果將一個原始的沒有類型化的ArrayList賦值給一個類型化ArrayList就會得到警告:因為得到的可能不是Employee類的類型的數組列表

ArrayList result = employeeDB.find(....);

這個時候可以使用強制類型轉換:這個時候會得到另外一個警告,因為虛擬機中沒有類型參數

ArrayList result = (ArrayList)employeeDB.find(....);

這個時候,如果確保不會造成嚴重的后果,可以使用@SuppressWarnings("unchecked")來標記這個變量能夠接受類型轉換:

@SuppressWarnings("unchecked")

ArrayList result = (ArrayList)employeeDB.find(....);

二、枚舉類Enum

1.沒有構造器和方法的枚舉類:在比較兩個枚舉類型的值時,永遠不需要調用equals,而是直接使用“==”就可以了。

public enum Size (SMALL, MEDIUM, LARGE, EXTRA_LARGE};

2.可以在枚舉類型中添加構造器、方法和域,例如:

enumSize

{

SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");

// 構造器private Size(String abbreviation) { this.abbreviation =abbreviation; }

// 返回括號里面的字符(縮寫)public String getAbbreviation() { returnabbreviation; }

// 括號里面的字符(縮寫)privateString abbreviation;

}

3.枚舉類的一些方法:

(1)toString方法能夠將枚舉對象轉化成字符串并返回枚舉常量名,例如:

System.out.println(Size.SMALL.toString());   // 打印:SMALL

(2)valueOf方法能夠根據枚舉常量名返回枚舉對象,例如:

Size s = Enum.valueOf(Size.class, "SMALL");

System.out.println(s.getAbbreviation());   // 打印:S

(3)values方法可以返回一個包含全部枚舉值的數組,例如:

Size[] values =Size.values();for(Size size : values)

System.out.print(size+ " ");  // 打印:SMALL MEDIUM LARGE EXTRA_LARGE

(4)ordinal方法返回enum聲明中枚舉常量的位置,例如:

System.out.println(Size.EXTRA_LARGE.ordinal()); // 打印:3

總結

以上是生活随笔為你收集整理的java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。