JAVA中List陣列與泛型
阿新 • • 發佈:2019-02-06
去除ArrayList中重複字串元素方式
A:案例演示
- 需求:ArrayList去除集合中字串的重複值(字串的內容相同)
思路:建立新集合方式
/** * A:案例演示 * 需求:ArrayList去除集合中字串的重複值(字串的內容相同) * 思路:建立新集合方式 */ public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); list.add("c"); list.add("c"); System.out.println(list); ArrayList newList = getSingle(list); System.out.println(newList); } /* * 去除重複 * 1,返回ArrayList * 2,引數列表ArrayList */ public static ArrayList getSingle(ArrayList list) { ArrayList newList = new ArrayList(); //建立一個新集合 Iterator it = list.iterator(); //獲取迭代器 while(it.hasNext()) { //判斷老集合中是否有元素 String temp = (String)it.next(); //將每一個元素臨時記錄住 if(!newList.contains(temp)) { //如果新集合中不包含該元素 newList.add(temp); //將該元素新增到新集合中 } } return newList; //將新集合返回 }
去除ArrayList中重複自定義物件元素
- A:案例演示
- 需求:ArrayList去除集合中自定義物件元素的重複值(物件的成員變數值相同)
- B:注意事項
- 重寫equals()方法的
LinkedList的特有功能
- A:LinkedList類概述
- B:LinkedList類特有功能
- public void addFirst(E e)及addLast(E e)
- public E getFirst()及getLast()
- public E removeFirst()及public E removeLast()
- public E get(int index);
棧和佇列資料結構
- 棧
- 先進後出
- 佇列
- 先進先出
用LinkedList模擬棧資料結構的集合並測試
A:案例演示
- 需求:請用LinkedList模擬棧資料結構的集合,並測試
- 建立一個類將Linked中的方法封裝
public class Stack { private LinkedList list = new LinkedList(); //建立LinkedList物件 public void in(Object obj) { list.addLast(obj); //封裝addLast()方法 } public Object out() { return list.removeLast(); //封裝removeLast()方法 } public boolean isEmpty() { return list.isEmpty(); //封裝isEmpty()方法 } }
泛型概述和基本使用
- A:泛型概述
- B:泛型好處
- 提高安全性(將執行期的錯誤轉換到編譯期)
- 省去強轉的麻煩
- C:泛型基本使用
- <>中放的必須是引用資料型別
- D:泛型使用注意事項
- 前後的泛型必須一致,或者後面的泛型可以省略不寫(1.7的新特性菱形泛型)
泛型的由來
-
- 泛型的由來:通過Object轉型問題引入
- 早期的Object型別可以接收任意的物件型別,但是在實際的使用中,會有型別轉換的問題。也就存在這隱患,所以Java提供了泛型來解決這個安全問題。
泛型類的概述及使用
- A:泛型類概述
- 把泛型定義在類上
- B:定義格式
- public class 類名<泛型型別1,…>
- C:注意事項
- 泛型型別必須是引用型別
- D:案例演示
- 泛型類的使用
泛型方法的概述和使用
- A:泛型方法概述
- 把泛型定義在方法上
- B:定義格式
- public <泛型型別> 返回型別 方法名(泛型型別 變數名)
- C:案例演示
- 泛型方法的使用
泛型介面的概述和使用
- A:泛型介面概述
- 把泛型定義在介面上
- B:定義格式
- public interface 介面名<泛型型別>
- C:案例演示
- 泛型介面的使用
泛型高階之萬用字元
- A:泛型萬用字元
增強for的概述和使用
- A:增強for概述
- 簡化陣列和Collection集合的遍歷
- B:格式:
-
for(元素資料型別 變數 : 陣列或者Collection集合) {
使用變數即可,該變數就是元素
} - C:案例演示
- 陣列,集合儲存元素用增強for遍歷
- D:好處
- 簡化遍歷
ArrayList儲存字串和自定義物件並遍歷增強for版
A:案例演示
- ArrayList儲存字串並遍歷增強for版
ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); for(String s : list) { System.out.println(s); }
三種迭代的能否刪除
- 普通for迴圈,可以刪除,但是索引要–
- 迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會出現併發修改異常
- 增強for迴圈不能刪除
靜態匯入的概述和使用
- A:靜態匯入概述
- B:格式:
- import static 包名….類名.方法名;
- 可以直接匯入到方法的級別
- C:注意事項
- 方法必須是靜態的,如果有多個同名的靜態方法,容易不知道使用誰?
這個時候要使用,必須加字首。由此可見,意義不大,所以一般不用,但是要能看懂。
- 方法必須是靜態的,如果有多個同名的靜態方法,容易不知道使用誰?
可變引數的概述和使用
- A:可變引數概述
- 定義方法的時候不知道該定義多少個引數
- B:格式
- 修飾符 返回值型別 方法名(資料型別… 變數名){}
- C:注意事項:
- 這裡的變數其實是一個數組
- 如果一個方法有可變引數,並且有多個引數,那麼,可變引數肯定是最後一個