JAVA學習筆記(二十)- 集合 List,java學習筆記
ArrayList 集合
/* * ArrayList,實現List介面 * 聲明數組時必須指定數組中元素的類型,可以是基礎資料型別 (Elementary Data Type),也可以是引用資料類型 * 聲明集合時可以不指定其元素的類型,元素類型預設為Object類型 */public class Test01{ public static void main(String[] args) { // 建立一個ArrayList集合 ArrayList list = new ArrayList(); // 添加元素 list.add("tom"); list.add(25); list.add(12.4); list.add(true); list.add(new Student()); list.add("tom");// List集合中的元素特點:有序、允許重複 list.add(1, "alice"); // list.add(20, 250); list.add(null); // 修改元素 list.set(0, "mike"); // 刪除元素 list.remove(1); list.remove("tom"); list.remove(new Integer(25)); // list.clear();//清空集合中的元素 // 擷取集合中的元素 /* * Object obj=list.get(2);//get()方法返回一個Object boolean flag=(Boolean) * obj; */ boolean flag = (Boolean) list.get(2); System.out.println("集合中索引為2的元素:" + flag); // 判斷集合中是否包括指定的元素 System.out.println("tom安在?" + list.contains("tom")); System.out.println("集合是否為空白:" + list.isEmpty()); System.out.println("mike在集合中的索引:" + list.indexOf("mike")); System.out.println("元素個數:" + list.size()); // 迴圈遍曆集合中的元素 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i));// 通過get()方法擷取集合中的元素 } // 將集合轉換為數組 Object[] objs = list.toArray(); System.out.println("數組中的元素:"+Arrays.toString(objs)); }}
ArrayList集合執行個體
/* * ArrayList */public class Test02{ public static void main(String[] args) { // 建立儲存狗狗資訊的集合 List list = new ArrayList(); Dog dog1 = new Dog("旺財", "大狼狗", 2); Dog dog2 = new Dog("黑子", "拉布拉多", 1); Dog dog3 = new Dog("小美", "雪娜瑞", 5); // 將狗狗對象添加到集合中 list.add(dog1); list.add(dog2); list.add(dog3); // 查詢狗狗的數量 System.out.println("共有" + list.size() + "條狗狗!"); System.out.println("分別為:"); for (Object obj : list)//使用foreach迴圈遍曆集合 { Dog dog = (Dog) obj;// 集合中元素類型預設為Object,需要強轉 System.out.println(dog.getName() + "," + dog.getBrand() + "," + dog.getAge()); } }}/* * Dog類 */class Dog{ private String name; private String brand; private int age; public Dog(String name, String brand, int age) { super(); this.name = name; this.brand = brand; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
Vectory 集合
/* * Vectory,用法與ArrayList類似,其是安全執行緒的,但效率效能不如ArrayList * 已淘汰,不建議使用 */public class Test03{ public static void main(String[] args) { // 建立一個Vector集合 Vector v = new Vector(); v.add(100); v.add(new Double(6.5)); v.add(new Date()); v.add("hello"); v.add(new String("world")); System.out.println("元素個數:" + v.size()); /* * 遍曆集合方法 */ // 方法一 System.out.println("********方法一*******"); for (int i = 0; i < v.size(); i++) { System.out.println(v.get(i)); } // 方法二 System.out.println("********方法二*******"); for (Object obj : v) { System.out.println(obj); } // 方法三:使用Enumeration迭代,適用於Vector、HashTable、Properties等集合,已淘汰 System.out.println("********方法三*******"); Enumeration e=v.elements();//調用Vector的elements()方法,返回一個Enumeration執行個體 while(e.hasMoreElements()){//調用Enumeration的hasMoreElements()方法判斷是否有元素 Object obj=e.nextElement();//調用Enumeration的nextElement()方法擷取當前元素 System.out.println(obj); } //直接輸出集合 System.out.println(v); }}
Stack棧
import java.util.Stack;/* * Stack棧,繼承自Vector */public class Test04{ public static void main(String[] args) { // 建立一個空堆棧 Stack stack = new Stack(); // 入棧 stack.push("tom"); stack.push("jack"); stack.push("alice"); // 出棧 System.out.println(stack.pop()); }}
LinkedList集合
import java.util.LinkedList;/* * LinkedList,實現List介面,鏈表格儲存體,頻繁添加、修改或刪除時效率更高 */public class Test05{ public static void main(String[] args) { // 建立一個LinkedList集合 LinkedList list = new LinkedList(); list.add("itany"); list.add(12); list.add(new Double(12.5)); list.add(0, "趙信"); list.addFirst("蓋倫"); list.addLast("寒冰"); System.out.println("索引為2的元素:" + list.get(2)); System.out.println("第一個元素:" + list.getFirst()); System.out.println("第一個元素:" + list.get(0)); System.out.println("最後一個元素:" + list.getLast()); System.out.println("最後一個元素:" + list.get(list.size() - 1)); System.out.println("集合中的元素:" + list); list.removeFirst(); list.removeLast(); System.out.println("集合中的元素:" + list); }}
ArrayLis、Vector、LinkedList效能對比
import java.util.ArrayList;import java.util.LinkedList;import java.util.Vector;/* * ArrayLis、Vector、LinkedList效能對比 */public class Test06{ public static void main(String[] args) { ArrayList al = new ArrayList(); Vector v = new Vector(); LinkedList ll = new LinkedList(); // 測試ArrayList效能 long time1 = System.currentTimeMillis();// 擷取執行前的毫秒數 for (int i = 1; i < 100000; i++) { al.add(0, i); } long time2 = System.currentTimeMillis();// 擷取執行後的毫秒數 System.out.println("ArrayList花費的時間:" + (time2 - time1)); // 測試Vector效能 long time3 = System.currentTimeMillis(); for (int i = 1; i < 100000; i++) { v.add(0, i); } long time4 = System.currentTimeMillis(); System.out.println("Vector花費的時間:" + (time4 - time3)); // 測試LinkedList效能 long time5 = System.currentTimeMillis(); for (int i = 1; i < 100000; i++) { ll.addFirst(i); } long time6 = System.currentTimeMillis(); System.out.println("LinkedList花費的時間:" + (time6 - time5)); }}