集合框架

集合框架的概念尤為重要,在項目中的地位就好比魚和水,重要性不言而喻。

對象和集合的熟練運用才能在往后的學習中占據(jù)主動性。


靈魂畫師上線:? ? 集合框架常用的接口和類

集合框架

數(shù)組:把很多類型相同,大小固定的數(shù)組放在一起。優(yōu)點:類型相同? ? 缺點:大小固定

集合:把很多數(shù)集合在一起。優(yōu)點:類型相同,大小可變? ? 缺點:類型多樣

集合+泛型? ? ?優(yōu)點:類型相同,大小可變,類型指定。

重要的接口和類

接口:Collection :類似于數(shù)組。? ? Map:key——value

Collection 重要的子接口:

①List:有序可重復的集合,支持下標操作

②Set:無序不可重復的集合,不支持下標操作

③Queue:隊列(先進先出,后進后出),針對java內(nèi)存操作

ArrayList的特點、常用方法、遍歷方式、增刪改查

List接口下的ArrayList類:可變長數(shù)組

創(chuàng)建:List<Object> list = new ArrayList<>();? ? //菱形語法

特點:有序可重復

方法:

size() 集合大小

add(對象)添加對象

get(下標)根據(jù)下標查找對象

iterator()迭代器

遍歷:(sys 是打印的簡寫,Alt+/自動補全)

①for? ? for(int i=0;i<list.size();i++) sys list.get(i)

②forEach for(Objcet o:list) sys o

③通用迭代器 Iterator it = list.iterator(); while(it.hasNext()){ sys it.next()} 如果有下一個,就輸出。

④列表迭代器 ListIterator lit = list.listIterator();? while(lit.hasNext())正向? while(lit.hasPrevious)逆向

泛型:<>

規(guī)定放入集合中元素的具體類型,只能使用引用數(shù)據(jù)類型。

增刪改查:

增:list.add(1,"aa");在下標為1的位置插入字符串a(chǎn)a。(可以為對象類型)

刪:list.remove(3);按下標刪

? ? ? ?list.remove("aa");按元素刪,重復元素刪除第一個

改:list.set(0,"bb");根據(jù)下標修改

查:就是遍歷啦

LinkedList和ArrayList和Vector的區(qū)別

ArrayList是list接口可變長數(shù)組的實現(xiàn),查找、修改的效率高

LinkedList是list接口鏈表的實現(xiàn),包含了隊列的操作,刪除和增加效率高。

Vector:ArrayList是Vector線程不安全的體現(xiàn)。vector效率低。(jdk1.0)

HashSet類的特點、增刪改查、遍歷

HashSet:set的通用實現(xiàn)

特點:無序、不可重復,可null。

set的增刪改查:

add("aa")如果有重復,放棄重復的元素

remove("aa")刪除指定的元素。(沒有下標)

修改分兩步——先刪除,再添加

遍歷:

①foreach循環(huán)? ? for(Object o:set)

②迭代器循環(huán)? ? Iterator it = set.iterator(); while(it.hasNext)

TreeSet類的特點、排序

特點:排序,不可重復,不可null。可以根據(jù)元素的自然順序進行排序。

排序:①只有可以比較大小的對象才可以放入TreeSet。②一定要放同類元素。(邊放邊排)

Map接口的特點、實現(xiàn)類、增刪改查、遍歷

Map:體現(xiàn)鍵值對關(guān)系。(key——value)

特點:

①一個鍵對應一個值,一個值能對應N個鍵。

②放入map中的是鍵值對,除鍵的類型是整形,其他類型都是隨機順序。

重要的實現(xiàn)類:HashMap、TreeMap、HashTable、Properties

增刪改查:查就是遍歷啦*2

增:map.put(鍵,值)

刪:map.remove(鍵)

改:map.put(鍵,值)//覆蓋

遍歷:

①直接遍歷值集合。Collection values = map.values() for(Object o:values){}

②先遍歷鍵。(核心)

Set<Object> keySet = map.keySet();?

Iterator<Object> it = keySet.iterator();

while(it.hasNext()){

system.out.println("key:"+it.next()+"\tvalue:"+map.get(it.next()));

}

③先遍歷值。(不常用)

Set entrySet = map.entrySet(); for(Object o:entrySet){sysout o}

HashMap的創(chuàng)建、特點

創(chuàng)建:Map<key,value> map = new HashMap<>();

特點:

鍵—無序,不可重復,可null。

值—沒有約束。線程不安全。

TreeMap的特點、注意點

特點:

可以根據(jù)key的自然順序進行排序。

注意點:

①key的類型要能排序

②key必須是同一類型

額外:HashTable是HashMap的線程安全實現(xiàn),HashMap效率更高

你以為掌握這些就完了嗎?


最后兩個點:泛型和比較器

泛型的定義、注意點、分類、作用

定義:運行時類型(調(diào)用時,決定屬性的類型)、參數(shù)化類型

注意點:

①泛型必須先定義后使用

②泛型可以定義N個,用【,】隔開

③泛型只接受引用數(shù)據(jù)類型

分類:

①泛型類:在類名后,使用<泛型類型>

栗:public class Container<E> {? }

②泛型方法:一般配合泛型類使用

③泛型接口:接口中可使用泛型,這個接口的實現(xiàn)類必須指明泛型的具體類型。

泛型作用:

①在使用時,確定具體的類型

②結(jié)合集合類型,規(guī)定放入集合中元素的具體類型。

使用:

1.Contanier<String> cr = new Contanier<String>();

2.Contanier<String>cr = new COntanier<>();JDK1.7以上,菱形語法。前面寫完,后面自動匹配。

關(guān)于java基礎(chǔ),還剩兩個大點——流和反射 要總結(jié)。

后面會記錄一些短小、精悍的小技巧、小規(guī)范和小知識點。

吃飯了,沖啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊



想要學的好,必須吃的飽
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容