首頁 > 軟體

JAVA常用API總結與說明

2022-12-11 14:01:42

一、JAVA常用API

java.lang.Math

提供sin, cos, tan, exp, log, log10 等類方法,PI和E等類欄位

java.lang.String(StringBuilder執行緒不安全,StringBuffer執行緒安全)

char charAt(int index)返回給定位置的程式碼單元
boolean equals(Object other)
boolean equalsIngoreCase(String other)
如果字串與other相等,返回true
忽略大小寫
int length()返回字串的長度
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
返回一個新字串,包含原始字串從beginIndex到串尾或到endIndex-1的所有程式碼單元
String toLowerCase()
String toUpperCase()
返回小寫字串
返回大寫字串
int indexOf(String str[, int fromIndex])
int lastIndexOF(String str[, int fromIndex])
返回第一個/最後一個子串的位置,從起始位置或者fromIndex開始

java.util.Scanner

Scanner(InputStream in)
Scanner(File f)
Scanner(String data)
用給定的輸入流建立一個Scanner物件
例子:Scanner in = new Scanner(System.in)
String nextLine()讀取輸入的下一行內容
String next()讀取輸入的下一個單詞(以空格作為間隔)
int nextInt()
double nextDouble()
讀取並轉換下一個表示整數或浮點數的字元序列

for each迴圈

for(variable : collection) statement

collection這一集合表示式必須是一個陣列或者是一個實現了Iterable介面的類物件

java.util.Arrays

static String toString(type[] a)返回包含a中資料元素的字串
static void sort(type[] a)採用優化的快速排序演演算法對陣列進行排序
static void binarySearch(type[] a, type v)使用二分搜尋演演算法查詢值v
static Boolean equals(type[] a, type[] b)如果兩個數位相同,返回true

陣列名.length

陣列長度

java.util.Radom

Random()構建一個新的亂數生成器
int nextInt(int n)返回一個 0 ~ n-1之間的亂數

java.lang.Object

String toString()返回描述該物件值的字串。在自定義類中應覆蓋這個方法
boolean equals(Object otherObject)比較兩個物件是否相等。在自定義類中應覆蓋這個方法
Class getClass()
int hashCode()
返回包含物件資訊的類物件
返回物件的雜湊碼
static wait()
static notify()
static notifyAll()

java.lang.Class

String getName()返回這個類的名字
static Class forName(String className)返回描述類名為className的Class物件
Object newInstance()返回這個類的一個新範例
Field[] getFields()
Field[] getDeclareFields()
getFields()返回一個包含Field物件的陣列,這些物件記錄了這個類或其超類的公有域
getDeclareFields()返回的Field物件記錄了這個類的全部域
Method[] getMethods()
Method[] getDeclareMethods()
getMethods()返回一個包含Method物件的陣列,這些物件記錄了這個類或其超類的公用方法
getDeclareMethods()返回的Field物件記錄了這個類的全部方法
Constructor[] getConstructors()
Constructor[] getDeclareConstructors()
getConstructors()返回一個包含Constructor物件的陣列,這些物件記錄了這個類的公有構造器
getDeclareConstructors()返回的Constructor物件記錄了這個類的全部構造器

斷言

assert 條件;

assert 條件:表示式;

二、JAVA集合框架

Java集合類庫將介面和實現分離。當程式使用集合時,一旦構建了集合就不需要知道究竟使用了哪種實現。因此,只有在構建集合物件時,使用具體的類才有意義。可以使用介面型別存放集合的參照。利用這種方法,一旦改變想法,可以輕鬆使用另外一種不同的實現,只需在物件建立處修改即可。

java.util.Collection<E>

Iterator<E> iterator()返回一個用於存取集合中每個元素的迭代器
int size()返回當前儲存在集合中的元素個數
boolean isEmpty()如果集合中沒有元素,返回true
boolean contains(Object obj)
boolean containAll(Collection<? extend E> other)
如果集合中包含相等物件,返回true
boolean add(Object element)
boolean addAll(Collection<? extend E> other)
將一個元素新增到集合中,集合改變返回true
boolean remove(Object element)
boolean removeAll(Collection<?> other)
刪除相等元素,成功刪除返回true

java.util.Iterator<E>

boolean hasNext()如果存在可存取的元素,返回true
E next()返回將要存取的下一個物件
void remove()刪除上次存取的元素

Java庫中具體集合

ArrayList一種可以動態增長和縮減的索引序列
LinkedList一種可以在任何位置進行高效插入和刪除操作的有序序列
ArrayDeque一種用迴圈陣列實現的雙端佇列
HashSet一種沒有重複元素的無序集合
TreeSet一種有序集
EnumSet一種包含列舉型別值的集合
LinkedHashSet一種可以記住元素插入次序的集
PriorityQueue一種允許高效刪除最小元素的集合
HashMap一種儲存鍵/值關聯的資料結構
TreeMap一種鍵值有序排列的對映表
EnumMap一種鍵值屬於列舉型別的對映表
LinkedHashMap一種可以記住鍵/值項新增次序的對映表
WeakHashMap一種其值無用武之地後可以被垃圾回收期回收的對映表
IdentityHashMap一種用==而不是用equals比較鍵值的對映表

1、List

List介面擴充套件自Collection,它可以定義一個允許重複的有序集合,從List介面中的方法來看,List介面主要是增加了面向位置的操作,允許在指定位置上操作元素,同時增加了一個能夠雙向遍歷線性表的新列表迭代器ListIterator。List介面有動態陣列(ArrayList類)和雙端連結串列(LinkedList類)兩種實現方式。

java.util.List<E>

ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
返回一個列表迭代器
迭代器第一次呼叫next返回給定位置元素
void add(int i, E element)
void addAll(int i, Colletion<? extend E> elements)
向集合指定位置新增元素
E remove(int i)刪除給定位置元素並返回
E get(int i)獲得給定位置元素並返回
E set(int i, E element)設定給定位置元素並返回原來的元素
int indexOf(Object element)
int lastIndexOf(Object element)
返回與指定元素相等元素在列表中第一次出現的位置
返回與指定元素相等元素在列表中最後一次出現的位置

java.util.ListIterator<E>

void add(E Element)在當前位置新增一個元素
void set(E Element)用新元素代替next或previous上次存取的元素
boolean havaPrevious()反向迭代列表時是否還有可供存取的值
E previous()返回前一個物件
int nextIndex()返回下一次呼叫next時返回的元素索引
int previousIndex()返回下一次呼叫previous時返回的元素索引

java.util.ArrayList<E>

ArrayList<E>()構造一個空陣列列表
boolean add(E obj)在陣列列表尾端新增一個元素,永遠返回true
int size()返回儲存在陣列中的當前元素數量
void set(int index, E obj)設定陣列列表指定位置的值
E get(int index)獲的指定位置的元素值
void add(int index, E obj)向後移動元素,插入元素
E remove(int index)刪除一個元素,並將後面元素前移

java.util.LinkedList<E>

LinkedList()
LinkedList(Colletion<? extend E> elements)
構造一個連結串列
void addFirst(E element)
void addLast(E element)
新增元素到表頭或表尾
E getFirst()
E getLast()
返回表頭或表尾的元素
E removeFirst()
E removeLast()
刪除表頭或表尾的元素並返回

2、Set

Set介面擴充套件自Collection,它與List的不同之處在於,規定Set的範例不包含重複的元素。在一個規則集內,一定不存在兩個相等的元素。AbstractSet是一個實現Set介面的抽象類,Set介面有三個具體實現類,分別是雜湊集HashSet、鏈式雜湊集LinkedHashSet和樹形集TreeSet。

java.util.HashSet<E>

HashSet()
HashSet(Colletion<? extend E> elements)
HashSet(int initialCapacity)
構造雜湊表

java.util.LinkedHashSet<E>

LinkedHashSet是用一個連結串列實現來擴充套件HashSet類,它支援對規則集內的元素排序。HashSet中的元素是沒有被排序的,而LinkedHashSet中的元素可以按照它們插入規則集的順序提取。

java.util.TreeSet<E>TreeSet擴充套件自AbstractSet,並實現了NavigableSet,AbstractSet擴充套件自AbstractCollection,樹形集是一個有序的Set,其底層是一顆樹,用紅黑樹實現,這樣就能從Set裡面提取一個有序序列了。在範例化TreeSet時,我們可以給TreeSet指定一個比較器Comparator來指定樹形集中的元素順序。樹形集中提供了很多便捷的方法。

3、佇列

java.util.Queue<E>(介面)

boolean add(E element)
boolean offer(E element)
如果佇列沒有滿,將元素新增到佇列尾部
E remove()
E poll()
如果佇列不為空,刪除並返回這個佇列頭部元素
E element()
E peek()
如果佇列不為空,返回這個佇列頭部元素

java.util.Deque<E>

介面Deque,是一個擴充套件自Queue的雙端佇列,它支援在兩端插入和刪除元素,Deque介面由ArrayDeque和LinkedList這兩個類實現,所以通常我們可以使用LinkedList來建立一個佇列。PriorityQueue類實現了一個優先佇列,優先佇列中元素被賦予優先順序,擁有高優先順序的先被刪除。

java.util.ProrityQueue<E>

優先順序佇列中的元素可以按任意順序插入,卻總是按照排序的順序進行檢索。優先順序佇列由堆實現。堆是一個可以自我調整的二元樹,對樹執行新增和刪除操作,可以讓最小元素移動到根(最小堆),而不必花費時間對元素進行排序

4、Map介面

Map,圖,是一種儲存鍵值對對映的容器類,在Map中鍵可以是任意型別的物件,但不能有重複的鍵,每個鍵都對應一個值,真正儲存在圖中的是鍵值構成的條目。

java.util.Map<K,V>

V get(Object key)獲得與鍵對應的值
V put(K key, V value)
V putAll(Map<? extends K, ? extends V> entries)
將鍵與對應的值關係插入到對映中
boolean containKey(Object key)
boolean containValue(Object value)
查詢

java.util.HashMap<K,V>

HashMap是基於雜湊表的Map介面的非同步實現,繼承自AbstractMap,AbstractMap是部分實現Map介面的抽象類。在之前的版本中,HashMap採用陣列+連結串列實現,即使用連結串列處理衝突,同一hash值的連結串列都儲存在一個連結串列裡。但是當連結串列中的元素較多,即hash值相等的元素較多時,通過key值依次查詢的效率較低。而JDK1.8中,HashMap採用陣列+連結串列+紅黑樹實現,當連結串列長度超過閾值(8)時,將連結串列轉換為紅黑樹,這樣大大減少了查詢時間。

java.util.LinkedHashMap<K,V>

LinkedHashMap繼承自HashMap,它主要是用連結串列實現來擴充套件HashMap類,HashMap中條目是沒有順序的,但是在LinkedHashMap中元素既可以按照它們插入圖的順序排序,也可以按它們最後一次被存取的順序排序。

java.util.TreeHashMap<K,V>

TreeMap基於紅黑樹資料結構的實現,鍵值可以使用Comparable或Comparator介面來排序。TreeMap繼承自AbstractMap,同時實現了介面NavigableMap,而介面NavigableMap則繼承自SortedMap。SortedMap是Map的子介面,使用它可以確保圖中的條目是排好序的。在實際使用中,如果更新圖時不需要保持圖中元素的順序,就使用HashMap,如果需要保持圖中元素的插入順序或者存取順序,就使用LinkedHashMap,如果需要使圖按照鍵值排序,就使用TreeMap。

5、其他集合類

下面主要介紹一下其它幾個特殊的集合類,Vector、Stack、HashTable、ConcurrentHashMap以及CopyOnWriteArrayList。

java.util.Vector<E>

用法上,Vector與ArrayList基本一致,不同之處在於Vector使用了關鍵字synchronized將存取和修改向量的方法都變成同步的了,所以對於不需要同步的應用程式來說,類ArrayList比類Vector更高效。

java.util.Stack<E>

Stack,棧類,是Java2之前引入的,繼承自類Vector。

java.util.HashTable

HashTable和前面介紹的HashMap很類似,它也是一個雜湊表,儲存的內容是鍵值對對映,不同之處在於,HashTable是繼承自Dictionary的,HashTable中的函數都是同步的,這意味著它也是執行緒安全的,另外,HashTable中key和value都不可以為null。

java.util.ConcurrentHashMap

ConcurrentHashMap是HashMap的執行緒安全版。同HashMap相比,ConcurrentHashMap不僅保證了存取的執行緒安全性,而且在效率上與HashTable相比,也有較大的提高。

java.util.CopyOnWriteArrayList

CopyOnWriteArrayList,是一個執行緒安全的List介面的實現,它使用了ReentrantLock鎖來保證在並行情況下提供高效能的並行讀取。

java.util.CopyOnWriteArraySet

CopyOnWriteArraySet,是一個執行緒安全的set介面的實現,它使用了ReentrantLock鎖來保證在並行情況下提供高效能的並行讀取。

ConcurrentLinkedQuerue是一個先進先出的佇列。它是非阻塞佇列。

ConcurrentSkipListMap可以在高效並行中替代SoredMap(例如用Collections.synchronzedMap包裝的TreeMap)。

ConcurrentSkipListSet可以在高效並行中替代SoredSet(例如用Collections.synchronzedSet包裝的TreeMap)。

6、泛型集合演演算法

6.1  排序

static <T extends Comparable<? super T>> void java.util.Collections.sort(List<T> elements,[new Comparator<T>(){ public int compare(T o1, T o2){return ...}   } ])對列表元素排序

6.2  查詢

static <T extends Comparable<? super T>> int java.util.Collections.binarySearch(List<T> elements, T key)二分查詢key,返回物件索引

6.3  其他

static <T> java.util.Collections.min(Collection<T> elements, Comparator<? super T> c)
static <T> java.util.Collections.max(Collection<T> elements, Comparator<? super T> c)
查詢最小值/最大值

三、並行部分API

java.lang.Runnable

void run()必須覆蓋這個方法

java.lang.Thread

Thread()
Thread(Runnable target)
構造器
void start()啟動執行緒
void run()如果沒有重寫,呼叫關聯Runnable的run方法
void interupt()中斷執行緒(中止阻塞狀態,對執行執行緒無作用)
void setPriority(int newPriority)設定優先順序(1-10,預設5)
static void yield()
static void sleep(long millis)
使當前執行緒處於讓步狀態(讓步於同優先順序或高優先順序執行緒)
休眠
void setDaemon()設定為守護執行緒
Thread.State getState()獲得執行緒當前狀態

鎖物件

ReentrantLock myLock = new ReentrantLock();
mylock.lock();
try{
critical section
}finally{
mylock.unlock();
}

條件物件

private ReetranLock mylock = new ReetranLock();
private Condition sufficientFunds = mylock.newCondition()
public void transfer(int from, int amount)
{
mylock.lock();
try{
while(account[from] < amount){
sufficientFunds.await();
}
...
sufficientFunds.singalAll();
}finally{
mylock.unlock();
}
}

synchronized關鍵字(內建鎖)

格式1:synchronized 方法

格式2:synchronized(obj){}

使用synchronized如何設定條件變數

void notifyAll()解除在物件上呼叫wait方法的執行緒的阻塞狀態
void wait()導致執行緒進入等待狀態

volatile域

volatile只提供可見性(線上程工作記憶體中被修改後立即寫入到主記憶體中),不提供原子性。
使用final變數可以保證可見性:建構函式完成時即不變,未完成構造期間對其他執行緒不可見。

java.lang.ThreadLocal<T>

作用:將記憶體共用變數變為執行緒拷貝變數

Executor類執行器

1)呼叫Executors類(工廠類)中靜態工廠方法newCacherThreadPool
2)呼叫submit提交Runnable或Callable物件
3)當不再提交任何任務時,呼叫shutdown

本文總結了JAVA常用API並附上了說明,更多關於JAVA常用API請檢視下面的相關連結


IT145.com E-mail:sddin#qq.com