底層數據結構是數組,查詢快,增刪慢
線程不安全,效率高
Vector:
底層數據結構是數組,查詢快,增刪慢
線程安全, 效率低
特有方法:
public void addElement(E obj) --> add()
public E elementAt(int index) --> get(int index)
public Enumeration<E> elements() ---> iterator()
boolean hasMoreElements() ---> hasNext()
E nextElement() ---> next()
LinkedList:
底層數據結構是鏈表,查詢慢,增刪快
線程不安全,效率高
特有方法:
void addFirst(E e) 將指定元素插入此列表的開頭。
void addLast(E e) 將指定元素添加到此列表的結尾。
E getFirst() 返回此列表的第一個元素
E getLast() 返回此列表的最後一個元素
E removeFirst() 移除並返回此列表的第一個元素。
E removeLast() 移除並返回此列表的最後一個元素
Stack: 棧
方法:
boolean empty() 測試堆棧是否爲空
E push(E item) 把項壓入堆棧頂部。
E pop() 移除堆棧頂部的對象,並作爲此函數的值返回該對象
—————————————————————————————
去除集合中字符串的重複值
方式1: 採用選擇排序算法
方式2: 創建新集合方式
—————————————————————————————
泛型: 用來約束數據的數據類型
泛型的格式:
<數據類型>
泛型可以使用在 類,接口,方法,變量上
泛型的好處
A:提高了程序的安全性
B:將運行期遇到的問題轉移到了編譯期
C:省去了類型強轉的麻煩
泛型類, 就是把泛型的聲明 定義在類上
如何聲明一個泛型類 :
格式 : public class 類名 <泛型類型> {}
什麼時候將泛型的類型確定的?
創建對象的時候確定的
泛型方法: 把泛型定義聲明在方法上
如何聲明一個泛型方法:
格式:public <泛型類型> 返回類型 方法名(泛型類型 .)
什麼時候將泛型的類型確定的?
調用方法的時候確定的
泛型接口: 把泛型定義在接口上
如何聲明一個泛型接口:
格式:public interface 接口名<泛型類型1…>
什麼時候將泛型的類型確定的?
創建接口子類對象的時候確定的
泛型高級(通配符):
泛型通配符<?>
任意類型,如果沒有明確,那麼就是Object以及任意的Java類了
? 理解爲就是 Object類型
<? extends E>
向上限定,E及其子類
? extends Animal
? 代表的就是Animal類本身或者是Animal類的子類
<? super E>
向下限定,E及其父類
? super Animal
? 代表的就是Animal類本身或者是Animal類的父類
—————————————————————————————
無論登入還是註冊 都是與用戶相關的信息
所以,我們要提供一個 用戶類
class User {
String 用戶名;
String 密碼;
public boolean 登錄 (用戶名, 密碼){}
public boolean 註冊 (用戶類對象 ){}
}
—————————————————————————————
隨着將來功能的增加,把所有的內容 都放在 用戶類中是不合適的
把 用戶類 進行拆解: 拆解成 用戶基本信息類 與 用戶功能操作類
class 用戶基本信息類 {
String 用戶名;
String 密碼;
}
class 用戶功能操作類 {
public boolean 登錄 (用戶名, 密碼){}
public boolean 註冊 (用戶類對象 ){}
}
—————————————————————————————
界面
選擇對應的功能
1: 登入
輸入用戶名與密碼信息
調用登入功能
2: 註冊
創建用戶對象
調用註冊功能
3: 退出
結束JVM
—————————————————————————————
按功能進行分包操作:
pojo: 具體的實體類
User.java 用戶類
ui: 界面
MainApp.java 界面類
dao: 具體的功能類的接口
UserDao.java 用戶功能接口文件
登入功能(抽象方法)
註冊功能(抽象方法)
dao.impl: 具體功能類的實現類包
UserDaoImpl.java 用戶功能具體實現類
登入功能(具體方法)
註冊功能(具體方法)
—————————————————————————————
Set:
|- HashSet
|- LinkedHashSet
|- TreeSet
set:
元素唯一不能重複
HashSet:
元素唯一不能重複
底層結構是 哈希表結構
元素的存與取的順序不能保證一致
如何保證元素的唯一的?
重寫hashCode() 與 equals()方法
LinkedHashSet:
元素唯一不能重複
底層結構是 哈希表結構 + 鏈表結構
元素的存與取的順序一致
如何保證元素的唯一與有序的?
元素唯一: 哈希表結構保證的
元素有序: 鏈表結構保證的
TreeSet:
元素唯一不能重複
底層結構是 二叉樹結構
元素的存與取的順序不能保證一致
但是,在集合內部進行了元素的排序【自然排序,比較器排序】
自然排序接口 Comparable<T>
實現方法 public abstract int compareTo(T obj);
比較器排序接口 Comparator<T>
實現方法 public abstract int compare(T obj1, T obj2);
TreeSet集合是如何保證元素唯一併有序的?
自然排序接口 Comparable<T>
比較器排序接口 Comparator<T>