欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA常用API總結(jié)與說明

 更新時(shí)間:2022年12月10日 14:33:13   作者:郭大俠寫leetcode  
這篇文章主要介紹了JAVA常用API總結(jié)與說明,包括JAVA線程常用API,JAVA隊(duì)列常用API,JAVA泛型集合算法常用API,JAVA并發(fā)常用API需要的朋友可以參考下

一、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()返回字符串的長(zhǎng)度
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
返回一個(gè)新字符串,包含原始字符串從beginIndex到串尾或到endIndex-1的所有代碼單元
String toLowerCase()
String toUpperCase()
返回小寫字符串
返回大寫字符串
int indexOf(String str[, int fromIndex])
int lastIndexOF(String str[, int fromIndex])
返回第一個(gè)/最后一個(gè)子串的位置,從起始位置或者fromIndex開始

java.util.Scanner

Scanner(InputStream in)
Scanner(File f)
Scanner(String data)
用給定的輸入流創(chuàng)建一個(gè)Scanner對(duì)象
例子:Scanner in = new Scanner(System.in)
String nextLine()讀取輸入的下一行內(nèi)容
String next()讀取輸入的下一個(gè)單詞(以空格作為間隔)
int nextInt()
double nextDouble()
讀取并轉(zhuǎn)換下一個(gè)表示整數(shù)或浮點(diǎn)數(shù)的字符序列

for each循環(huán)

for(variable : collection) statement

collection這一集合表達(dá)式必須是一個(gè)數(shù)組或者是一個(gè)實(shí)現(xiàn)了Iterable接口的類對(duì)象

java.util.Arrays

static String toString(type[] a)返回包含a中數(shù)據(jù)元素的字符串
static void sort(type[] a)采用優(yōu)化的快速排序算法對(duì)數(shù)組進(jìn)行排序
static void binarySearch(type[] a, type v)使用二分搜索算法查找值v
static Boolean equals(type[] a, type[] b)如果兩個(gè)數(shù)字相同,返回true

數(shù)組名.length

數(shù)組長(zhǎng)度

java.util.Radom

Random()構(gòu)建一個(gè)新的隨機(jī)數(shù)生成器
int nextInt(int n)返回一個(gè) 0 ~ n-1之間的隨機(jī)數(shù)

java.lang.Object

String toString()返回描述該對(duì)象值的字符串。在自定義類中應(yīng)覆蓋這個(gè)方法
boolean equals(Object otherObject)比較兩個(gè)對(duì)象是否相等。在自定義類中應(yīng)覆蓋這個(gè)方法
Class getClass()
int hashCode()
返回包含對(duì)象信息的類對(duì)象
返回對(duì)象的散列碼
static wait()
static notify()
static notifyAll()

java.lang.Class

String getName()返回這個(gè)類的名字
static Class forName(String className)返回描述類名為className的Class對(duì)象
Object newInstance()返回這個(gè)類的一個(gè)新實(shí)例
Field[] getFields()
Field[] getDeclareFields()
getFields()返回一個(gè)包含F(xiàn)ield對(duì)象的數(shù)組,這些對(duì)象記錄了這個(gè)類或其超類的公有域
getDeclareFields()返回的Field對(duì)象記錄了這個(gè)類的全部域
Method[] getMethods()
Method[] getDeclareMethods()
getMethods()返回一個(gè)包含Method對(duì)象的數(shù)組,這些對(duì)象記錄了這個(gè)類或其超類的公用方法
getDeclareMethods()返回的Field對(duì)象記錄了這個(gè)類的全部方法
Constructor[] getConstructors()
Constructor[] getDeclareConstructors()
getConstructors()返回一個(gè)包含Constructor對(duì)象的數(shù)組,這些對(duì)象記錄了這個(gè)類的公有構(gòu)造器
getDeclareConstructors()返回的Constructor對(duì)象記錄了這個(gè)類的全部構(gòu)造器

斷言

assert 條件;

assert 條件:表達(dá)式;

二、JAVA集合框架

Java集合類庫(kù)將接口和實(shí)現(xiàn)分離。當(dāng)程序使用集合時(shí),一旦構(gòu)建了集合就不需要知道究竟使用了哪種實(shí)現(xiàn)。因此,只有在構(gòu)建集合對(duì)象時(shí),使用具體的類才有意義??梢?strong>使用接口類型存放集合的引用。利用這種方法,一旦改變想法,可以輕松使用另外一種不同的實(shí)現(xiàn),只需在對(duì)象創(chuàng)建處修改即可。

java.util.Collection<E>

Iterator<E> iterator()返回一個(gè)用于訪問集合中每個(gè)元素的迭代器
int size()返回當(dāng)前存儲(chǔ)在集合中的元素個(gè)數(shù)
boolean isEmpty()如果集合中沒有元素,返回true
boolean contains(Object obj)
boolean containAll(Collection<? extend E> other)
如果集合中包含相等對(duì)象,返回true
boolean add(Object element)
boolean addAll(Collection<? extend E> other)
將一個(gè)元素添加到集合中,集合改變返回true
boolean remove(Object element)
boolean removeAll(Collection<?> other)
刪除相等元素,成功刪除返回true

java.util.Iterator<E>

boolean hasNext()如果存在可訪問的元素,返回true
E next()返回將要訪問的下一個(gè)對(duì)象
void remove()刪除上次訪問的元素

Java庫(kù)中具體集合

ArrayList一種可以動(dòng)態(tài)增長(zhǎng)和縮減的索引序列
LinkedList一種可以在任何位置進(jìn)行高效插入和刪除操作的有序序列
ArrayDeque一種用循環(huán)數(shù)組實(shí)現(xiàn)的雙端隊(duì)列
HashSet一種沒有重復(fù)元素的無(wú)序集合
TreeSet一種有序集
EnumSet一種包含枚舉類型值的集合
LinkedHashSet一種可以記住元素插入次序的集
PriorityQueue一種允許高效刪除最小元素的集合
HashMap一種存儲(chǔ)鍵/值關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)
TreeMap一種鍵值有序排列的映射表
EnumMap一種鍵值屬于枚舉類型的映射表
LinkedHashMap一種可以記住鍵/值項(xiàng)添加次序的映射表
WeakHashMap一種其值無(wú)用武之地后可以被垃圾回收期回收的映射表
IdentityHashMap一種用==而不是用equals比較鍵值的映射表

1、List

List接口擴(kuò)展自Collection,它可以定義一個(gè)允許重復(fù)的有序集合,從List接口中的方法來(lái)看,List接口主要是增加了面向位置的操作,允許在指定位置上操作元素,同時(shí)增加了一個(gè)能夠雙向遍歷線性表的新列表迭代器ListIterator。List接口有動(dòng)態(tài)數(shù)組(ArrayList類)和雙端鏈表(LinkedList類)兩種實(shí)現(xiàn)方式。

java.util.List<E>

ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
返回一個(gè)列表迭代器
迭代器第一次調(diào)用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)設(shè)置給定位置元素并返回原來(lái)的元素
int indexOf(Object element)
int lastIndexOf(Object element)
返回與指定元素相等元素在列表中第一次出現(xiàn)的位置
返回與指定元素相等元素在列表中最后一次出現(xiàn)的位置

java.util.ListIterator<E>

void add(E Element)在當(dāng)前位置添加一個(gè)元素
void set(E Element)用新元素代替next或previous上次訪問的元素
boolean havaPrevious()反向迭代列表時(shí)是否還有可供訪問的值
E previous()返回前一個(gè)對(duì)象
int nextIndex()返回下一次調(diào)用next時(shí)返回的元素索引
int previousIndex()返回下一次調(diào)用previous時(shí)返回的元素索引

java.util.ArrayList<E>

ArrayList<E>()構(gòu)造一個(gè)空數(shù)組列表
boolean add(E obj)在數(shù)組列表尾端添加一個(gè)元素,永遠(yuǎn)返回true
int size()返回存儲(chǔ)在數(shù)組中的當(dāng)前元素?cái)?shù)量
void set(int index, E obj)設(shè)置數(shù)組列表指定位置的值
E get(int index)獲的指定位置的元素值
void add(int index, E obj)向后移動(dòng)元素,插入元素
E remove(int index)刪除一個(gè)元素,并將后面元素前移

java.util.LinkedList<E>

LinkedList()
LinkedList(Colletion<? extend E> elements)
構(gòu)造一個(gè)鏈表
void addFirst(E element)
void addLast(E element)
添加元素到表頭或表尾
E getFirst()
E getLast()
返回表頭或表尾的元素
E removeFirst()
E removeLast()
刪除表頭或表尾的元素并返回

2、Set

Set接口擴(kuò)展自Collection,它與List的不同之處在于,規(guī)定Set的實(shí)例不包含重復(fù)的元素。在一個(gè)規(guī)則集內(nèi),一定不存在兩個(gè)相等的元素。AbstractSet是一個(gè)實(shí)現(xiàn)Set接口的抽象類,Set接口有三個(gè)具體實(shí)現(xiàn)類,分別是散列集HashSet、鏈?zhǔn)缴⒘屑疞inkedHashSet和樹形集TreeSet。

java.util.HashSet<E>

HashSet()
HashSet(Colletion<? extend E> elements)
HashSet(int initialCapacity)
構(gòu)造散列表

java.util.LinkedHashSet<E>

LinkedHashSet是用一個(gè)鏈表實(shí)現(xiàn)來(lái)擴(kuò)展HashSet類,它支持對(duì)規(guī)則集內(nèi)的元素排序。HashSet中的元素是沒有被排序的,而LinkedHashSet中的元素可以按照它們插入規(guī)則集的順序提取。

java.util.TreeSet<E>TreeSet擴(kuò)展自AbstractSet,并實(shí)現(xiàn)了NavigableSet,AbstractSet擴(kuò)展自AbstractCollection,樹形集是一個(gè)有序的Set,其底層是一顆樹,用紅黑樹實(shí)現(xiàn),這樣就能從Set里面提取一個(gè)有序序列了。在實(shí)例化TreeSet時(shí),我們可以給TreeSet指定一個(gè)比較器Comparator來(lái)指定樹形集中的元素順序。樹形集中提供了很多便捷的方法。

3、隊(duì)列

java.util.Queue<E>(接口)

boolean add(E element)
boolean offer(E element)
如果隊(duì)列沒有滿,將元素添加到隊(duì)列尾部
E remove()
E poll()
如果隊(duì)列不為空,刪除并返回這個(gè)隊(duì)列頭部元素
E element()
E peek()
如果隊(duì)列不為空,返回這個(gè)隊(duì)列頭部元素

java.util.Deque<E>

接口Deque,是一個(gè)擴(kuò)展自Queue的雙端隊(duì)列,它支持在兩端插入和刪除元素,Deque接口由ArrayDeque和LinkedList這兩個(gè)類實(shí)現(xiàn),所以通常我們可以使用LinkedList來(lái)創(chuàng)建一個(gè)隊(duì)列。PriorityQueue類實(shí)現(xiàn)了一個(gè)優(yōu)先隊(duì)列,優(yōu)先隊(duì)列中元素被賦予優(yōu)先級(jí),擁有高優(yōu)先級(jí)的先被刪除。

java.util.ProrityQueue<E>

優(yōu)先級(jí)隊(duì)列中的元素可以按任意順序插入,卻總是按照排序的順序進(jìn)行檢索。優(yōu)先級(jí)隊(duì)列由堆實(shí)現(xiàn)。堆是一個(gè)可以自我調(diào)整的二叉樹,對(duì)樹執(zhí)行添加和刪除操作,可以讓最小元素移動(dòng)到根(最小堆),而不必花費(fèi)時(shí)間對(duì)元素進(jìn)行排序

4、Map接口

Map,圖,是一種存儲(chǔ)鍵值對(duì)映射的容器類,在Map中鍵可以是任意類型的對(duì)象,但不能有重復(fù)的鍵,每個(gè)鍵都對(duì)應(yīng)一個(gè)值,真正存儲(chǔ)在圖中的是鍵值構(gòu)成的條目。

java.util.Map<K,V>

V get(Object key)獲得與鍵對(duì)應(yīng)的值
V put(K key, V value)
V putAll(Map<? extends K, ? extends V> entries)
將鍵與對(duì)應(yīng)的值關(guān)系插入到映射中
boolean containKey(Object key)
boolean containValue(Object value)
查詢

java.util.HashMap<K,V>

HashMap是基于哈希表的Map接口的非同步實(shí)現(xiàn),繼承自AbstractMap,AbstractMap是部分實(shí)現(xiàn)Map接口的抽象類。在之前的版本中,HashMap采用數(shù)組+鏈表實(shí)現(xiàn),即使用鏈表處理沖突,同一hash值的鏈表都存儲(chǔ)在一個(gè)鏈表里。但是當(dāng)鏈表中的元素較多,即hash值相等的元素較多時(shí),通過key值依次查找的效率較低。而JDK1.8中,HashMap采用數(shù)組+鏈表+紅黑樹實(shí)現(xiàn),當(dāng)鏈表長(zhǎng)度超過閾值(8)時(shí),將鏈表轉(zhuǎn)換為紅黑樹,這樣大大減少了查找時(shí)間。

java.util.LinkedHashMap<K,V>

LinkedHashMap繼承自HashMap,它主要是用鏈表實(shí)現(xiàn)來(lái)擴(kuò)展HashMap類,HashMap中條目是沒有順序的,但是在LinkedHashMap中元素既可以按照它們插入圖的順序排序,也可以按它們最后一次被訪問的順序排序。

java.util.TreeHashMap<K,V>

TreeMap基于紅黑樹數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),鍵值可以使用Comparable或Comparator接口來(lái)排序。TreeMap繼承自AbstractMap,同時(shí)實(shí)現(xiàn)了接口NavigableMap,而接口NavigableMap則繼承自SortedMap。SortedMap是Map的子接口,使用它可以確保圖中的條目是排好序的。在實(shí)際使用中,如果更新圖時(shí)不需要保持圖中元素的順序,就使用HashMap,如果需要保持圖中元素的插入順序或者訪問順序,就使用LinkedHashMap,如果需要使圖按照鍵值排序,就使用TreeMap。

5、其他集合類

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

java.util.Vector<E>

用法上,Vector與ArrayList基本一致,不同之處在于Vector使用了關(guān)鍵字synchronized將訪問和修改向量的方法都變成同步的了,所以對(duì)于不需要同步的應(yīng)用程序來(lái)說,類ArrayList比類Vector更高效。

java.util.Stack<E>

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

java.util.HashTable

HashTable和前面介紹的HashMap很類似,它也是一個(gè)散列表,存儲(chǔ)的內(nèi)容是鍵值對(duì)映射,不同之處在于,HashTable是繼承自Dictionary的,HashTable中的函數(shù)都是同步的,這意味著它也是線程安全的,另外,HashTable中key和value都不可以為null。

java.util.ConcurrentHashMap

ConcurrentHashMap是HashMap的線程安全版。同HashMap相比,ConcurrentHashMap不僅保證了訪問的線程安全性,而且在效率上與HashTable相比,也有較大的提高。

java.util.CopyOnWriteArrayList

CopyOnWriteArrayList,是一個(gè)線程安全的List接口的實(shí)現(xiàn),它使用了ReentrantLock鎖來(lái)保證在并發(fā)情況下提供高性能的并發(fā)讀取。

java.util.CopyOnWriteArraySet

CopyOnWriteArraySet,是一個(gè)線程安全的set接口的實(shí)現(xiàn),它使用了ReentrantLock鎖來(lái)保證在并發(fā)情況下提供高性能的并發(fā)讀取。

ConcurrentLinkedQuerue是一個(gè)先進(jìn)先出的隊(duì)列。它是非阻塞隊(duì)列。

ConcurrentSkipListMap可以在高效并發(fā)中替代SoredMap(例如用Collections.synchronzedMap包裝的TreeMap)。

ConcurrentSkipListSet可以在高效并發(fā)中替代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 ...}   } ])對(duì)列表元素排序

6.2  查找

static <T extends Comparable<? super T>> int java.util.Collections.binarySearch(List<T> elements, T key)二分查找key,返回對(duì)象索引

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)
查找最小值/最大值

三、并發(fā)部分API

java.lang.Runnable

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

java.lang.Thread

Thread()
Thread(Runnable target)
構(gòu)造器
void start()啟動(dòng)線程
void run()如果沒有重寫,調(diào)用關(guān)聯(lián)Runnable的run方法
void interupt()中斷線程(中止阻塞狀態(tài),對(duì)運(yùn)行線程無(wú)作用)
void setPriority(int newPriority)設(shè)置優(yōu)先級(jí)(1-10,默認(rèn)5)
static void yield()
static void sleep(long millis)
使當(dāng)前線程處于讓步狀態(tài)(讓步于同優(yōu)先級(jí)或高優(yōu)先級(jí)線程)
休眠
void setDaemon()設(shè)置為守護(hù)線程
Thread.State getState()獲得線程當(dāng)前狀態(tài)

鎖對(duì)象

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

條件對(duì)象

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關(guān)鍵字(內(nèi)置鎖)

格式1:synchronized 方法

格式2:synchronized(obj){}

使用synchronized如何設(shè)置條件變量

void notifyAll()解除在對(duì)象上調(diào)用wait方法的線程的阻塞狀態(tài)
void wait()導(dǎo)致線程進(jìn)入等待狀態(tài)

volatile域

volatile只提供可見性(在線程工作內(nèi)存中被修改后立即寫入到主存中),不提供原子性。
使用final變量可以保證可見性:構(gòu)造函數(shù)完成時(shí)即不變,未完成構(gòu)造期間對(duì)其他線程不可見。

java.lang.ThreadLocal<T>

作用:將內(nèi)存共享變量變?yōu)榫€程拷貝變量

Executor類執(zhí)行器

1)調(diào)用Executors類(工廠類)中靜態(tài)工廠方法newCacherThreadPool
2)調(diào)用submit提交Runnable或Callable對(duì)象
3)當(dāng)不再提交任何任務(wù)時(shí),調(diào)用shutdown

本文總結(jié)了JAVA常用API并附上了說明,更多關(guān)于JAVA常用API請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • Spring的事務(wù)機(jī)制實(shí)例代碼

    Spring的事務(wù)機(jī)制實(shí)例代碼

    這篇文章主要介紹了Spring的事務(wù)機(jī)制實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 關(guān)于MyBatis中Mapper?XML熱加載優(yōu)化

    關(guān)于MyBatis中Mapper?XML熱加載優(yōu)化

    大家好,本篇文章主要講的是關(guān)于MyBatis中Mapper?XML熱加載優(yōu)化,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Spring中使用JSR303請(qǐng)求約束判空的實(shí)現(xiàn)

    Spring中使用JSR303請(qǐng)求約束判空的實(shí)現(xiàn)

    這篇文章主要介紹了Spring中使用JSR303請(qǐng)求約束判空的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java實(shí)現(xiàn)拓?fù)渑判虻氖纠a

    Java實(shí)現(xiàn)拓?fù)渑判虻氖纠a

    這篇文章我們要講的是拓?fù)渑判?,這是一個(gè)針對(duì)有向無(wú)環(huán)圖的算法,主要是為了解決前驅(qū)后繼的關(guān)系,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Java隨機(jī)數(shù)的5種獲得方法(非常詳細(xì)!)

    Java隨機(jī)數(shù)的5種獲得方法(非常詳細(xì)!)

    這篇文章主要給大家介紹了關(guān)于Java隨機(jī)數(shù)的5種獲得方法,在實(shí)際開發(fā)中產(chǎn)生隨機(jī)數(shù)的使用是很普遍的,所以在程序中進(jìn)行產(chǎn)生隨機(jī)數(shù)操作很重要,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java通俗易懂系列設(shè)計(jì)模式之適配器模式

    Java通俗易懂系列設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計(jì)模式之適配器模式,對(duì)設(shè)計(jì)模式感興趣的同學(xué),一定要看一下
    2021-04-04
  • SpringBoot集成?JWT實(shí)現(xiàn)用戶登錄認(rèn)證的項(xiàng)目實(shí)踐

    SpringBoot集成?JWT實(shí)現(xiàn)用戶登錄認(rèn)證的項(xiàng)目實(shí)踐

    當(dāng)今前后端分離時(shí)代,基于Token的會(huì)話保持機(jī)制比傳統(tǒng)的Session/Cookie機(jī)制更加方便,本文主要介紹了SpringBoot集成?JWT實(shí)現(xiàn)用戶登錄認(rèn)證的項(xiàng)目實(shí)踐,感興趣的可以了解一下
    2023-08-08
  • java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例

    java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例

    這篇文章主要介紹了java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • springboot整合druid連接池的步驟

    springboot整合druid連接池的步驟

    這篇文章主要介紹了springboot整合druid連接池的步驟,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • 淺談Java由于不當(dāng)?shù)膱?zhí)行順序?qū)е碌乃梨i

    淺談Java由于不當(dāng)?shù)膱?zhí)行順序?qū)е碌乃梨i

    為了保證線程的安全,我們引入了加鎖機(jī)制,但是如果不加限制的使用加鎖,就有可能會(huì)導(dǎo)致順序死鎖(Lock-Ordering Deadlock)。本文將會(huì)討論一下順序死鎖的問題。
    2021-06-06

最新評(píng)論