Java程式設計基礎17——集合(List集合)
阿新 • • 發佈:2018-12-10
1_(去除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; //將新集合返回 }
2_(去除ArrayList中重複自定義物件元素)*
-
A:案例演示
- 需求:ArrayList去除集合中自定義物件元素的重複值(物件的成員變數值相同)
-
B:注意事項
- 重寫equals()方法的
3_(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);
4_(棧和佇列資料結構)*
-
棧
- 先進後出
-
佇列
- 先進先出
5_(用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()方法 }
}
6_(泛型概述和基本使用)*
- A:泛型概述
-
B:泛型好處
- 提高安全性(將執行期的錯誤轉換到編譯期)
- 省去強轉的麻煩
-
C:泛型基本使用
- <>中放的必須是引用資料型別
-
D:泛型使用注意事項
- 前後的泛型必須一致,或者後面的泛型可以省略不寫(1.7的新特性菱形泛型)
7_(ArrayList儲存字串和自定義物件並遍歷泛型版)*
-
A:案例演示
- ArrayList儲存字串並遍歷泛型版
8_(泛型的由來)(瞭解)
-
A:案例演示
- 泛型的由來:通過Object轉型問題引入
- 早期的Object型別可以接收任意的物件型別,但是在實際的使用中,會有型別轉換的問題。也就存在這隱患,所以Java提供了泛型來解決這個安全問題。
9_(泛型類的概述及使用)(瞭解)
-
A:泛型類概述<T>
- 把泛型定義在類上
-
B:定義格式
- public class 類名<泛型型別1,…>
-
C:注意事項
- 泛型型別必須是引用型別
-
D:案例演示
- 泛型類的使用
10_(泛型方法的概述和使用)(瞭解)
-
A:泛型方法概述
- 把泛型定義在方法上
-
B:定義格式
- public <泛型型別> 返回型別 方法名(泛型型別 變數名)
-
C:案例演示
- 泛型方法的使用
11_(泛型介面的概述和使用)(瞭解)
-
A:泛型介面概述
- 把泛型定義在介面上
-
B:定義格式
- public interface 介面名<泛型型別>
-
C:案例演示
- 泛型介面的使用
12_(泛型高階之萬用字元)(瞭解)
-
A:泛型萬用字元<?>
- 任意型別,如果沒有明確,那麼就是Object以及任意的Java類了
-
B:? extends E
- 向下限定,E及其子類
-
C:? super E
- 向上限定,E及其父類
13_(增強for的概述和使用)*
-
A:增強for概述
- 簡化陣列和Collection集合的遍歷
- B:格式:
for(元素資料型別 變數 : 陣列或者Collection集合) { 使用變數即可,該變數就是元素 }
-
C:案例演示
- 陣列,集合儲存元素用增強for遍歷
-
D:好處
- 簡化遍歷
14_(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);
}
15_(三種迭代的能否刪除)*
- 普通for迴圈,可以刪除,但是索引要--
- 迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會出現併發修改異常
- 增強for迴圈不能刪除
16_(靜態匯入的概述和使用)(瞭解)
- A:靜態匯入概述
-
B:格式:
- import static 包名….類名.方法名;
- 可以直接匯入到方法的級別
-
C:注意事項
- 方法必須是靜態的,如果有多個同名的靜態方法,容易不知道使用誰?
這個時候要使用,必須加字首。由此可見,意義不大,所以一般不用,但是要能看懂。
17_(可變引數的概述和使用)*
-
A:可變引數概述
- 定義方法的時候不知道該定義多少個引數
-
B:格式
- 修飾符 返回值型別 方法名(資料型別… 變數名){}
-
C:注意事項:
- 這裡的變數其實是一個數組
- 如果一個方法有可變引數,並且有多個引數,那麼,可變引數肯定是最後一個
18_(Arrays工具類的asList()方法的使用)*
-
A:案例演示
- Arrays工具類的asList()方法的使用
- Collection中toArray(T[] a)泛型版的集合轉陣列
19_(集合巢狀之ArrayList巢狀ArrayList)*
-
A:案例演示
- 集合巢狀之ArrayList巢狀ArrayList