Java集合基礎知識整理

2021-09-10 06:33:04 字數 4479 閱讀 9203

長度區別:陣列長度固定,集合長度可變

內容不同:陣列只能是同一型別元素,集合可以儲存不同型別元素

元素的資料型別不同:陣列可以儲存基本型別和引用型別,集合只能儲存引用型別(物件)

集合繼承關係圖:

是所有collextion集合類的超類,是乙個抽象類

基本功能:

public static void main(string args)
高階功能:
public static void main(string args)
集合的遍歷:
//陣列方式

//1.先轉陣列

object objs = c.toarray();

//2.按陣列方式遍歷

for(...)

//迭代器方式

//建立迭代器

iterator it = c.iterator(); //返回介面子類物件,多型應用

while (it.hasnext())

//注意:對同一物件不能多次使用next方法

基本操作同上collection父類.

特點:有序的集合

可以對元素的插入位置進行精確的控制

可根據元素的整數索引訪問元素,並搜尋元素

允許重複(與set不同)

特有功能:

public static void main(string args) 

//根據索引刪除元素

list.remove(1);

system.out.println(list);

//修改元素

list.set(1, "aaa");

system.out.println(list);

//列表迭代器

listiterator lit = list.listiterator();

while (lit.hasnext())

//特有功能,獲取上乙個元素,若想逆向遍歷,必須先正向遍歷,一般無意義

while (lit.hasprevious())

}

注意問題:

併發修改異常:在迭代遍歷中加入元素,迭代器並不知道,所以報錯;迭代器遍歷元素時不能修改元素.

如何解決?

迭代器迭代元素,迭代器修改元素,使用子介面listiterator可以新增元素,新新增的元素就在迭代元素後面

集合遍歷元素,集合修改元素(for迴圈),但元素會在最後新增

list類的三個子類:

arraylist類:底層資料結構是陣列,查詢快,增刪慢,執行緒不安全,效率高

vector:底層資料結構是陣列,查詢快,增刪慢,執行緒安全,效率低

linkedlist:底層是鍊錶實現,並且是雙重鍊錶,查詢慢,但是增刪快,執行緒不安全,效率高

listlist = colloections.synchronizedlist(new arraylist(string);
arraylist子類:

操作等已在collection類中演示

vector子類:

特有功能:

public static void main(string args) 

//特有迭代

enumeration en = v.elements(); //返回的是實現類的物件

while (en.hasmoreelements())

//迭代器

iterator iterator = v.iterator();

while (iterator.hasnext())

}

linkedlist子類:

特有功能:

public static void main(string args)
arrays工具類與集合轉換:
string strarr = ;

listlist = arrays.aslist(strarr);

for (string s : list)

注意:把陣列轉換成集合時長度不變,本質上仍是乙個陣列

集合巢狀:
public static void main(string args) }}

特點:

無序(儲存順序和取出順序不一致)

唯一(不重複)

hashset子類:

可以重寫equals方法,判斷是否是相同物件

底層是雜湊表

linkedhashset子類:

是set的雜湊表和煉表實現,其它都相同

特點:鍊錶特性保證元素有序

treeset子類:

能夠對元素進行某種規則進行排序

自然排序:乙個類如果需要自然排序,就必須實現介面comparable並實現compareto()方法

比較器排序:單獨建立比較類並實現介面comparable並實現compareto()方法

collection是單列集合的頂層介面,collections是針對集合操作的工具類,比如排序和查詢等.

常見用法:

public static void main(string args)
map集合是鍵值對雙列集合

鍵是唯一的,值可重複,且一一對應

基於雜湊表的map介面實現,用來保證鍵的唯一性

基礎功能:

public static void main(string args)
高階功能(獲取):
public static void main(string args) 

//獲取所有值的集合

collectioncon = m.values();

for (string value : con)

}

集合遍歷:
public static void main(string args) 

//方式2,獲取所有鍵值對物件

set> en = m.entryset();

for (map.entryobj : en)

}

特點:

具有可預知的迭代順序,且唯一

支援自然排序和比較器排序

自然排序:類實現compareto介面,並重寫compareto方法.

public class student implements comparable

}

比較器排序:在初始化集合的時候重寫呼叫比較器構造方法
treemaptm = new treemap(new comparator() 

});

前者執行緒不安全,效率高;後者執行緒安全,效率低

前者允許null和null值,後者不允許

不是,list,set 不繼承,它們繼承collection.

map本身是乙個頂層介面

區別:collection類:單列集合

list(有序,可重複):

set(無序,唯一):

如何保證唯一性:

先判斷hashcode是否相同,否就就新增到集合,是就再比較equals,否就新增,是就是重複不新增

-linkedhashset: 是hashset的子類,底層是鍊錶和雜湊表組成,鍊錶保證有序,雜湊表保證唯一.

如何保證唯一性?

根據比較值是否為0

如何保證元素排序?

兩種方式,自然排序(元素具備比較性)和比較器排序(集合具備比較性)

map(雙列集合):

注意: map集合的資料僅僅針對鍵有效,與值無關

hashmap:底層是雜湊表,執行緒不安全,依賴hashcode()和equals().自定義類需要自動生成這兩個方法,不支援排序

如何保證唯一性:

先判斷hashcode是否相同,否就就新增到集合,是就再比較equals,否就新增,是就是重複不新增

linkedhashmap:是hashset的子類,底層是鍊錶和雜湊表組成,鍊錶保證有序,雜湊表保證唯一.

hashtable: 執行緒安全的hashmap

treemap:底層資料結構是紅黑樹(是一種自平衡的二叉樹,保證深度不會太深),支援排序

如何保證唯一性?

根據比較值是否為0

如何保證元素排序?

兩種方式,自然排序(元素具備比較性)和比較器排序(集合具備比較性)

java基礎知識整理

一。構造方法,構造 塊,靜態 塊,靜態方法的區別 public class hellob extends helloa public hellob static 構造 塊 是給所有的物件進行初始化,也就是說,所有的物件都會呼叫乙個 塊。只要物件一建立。就會呼叫這 個 塊。建構函式 是給與之對應的物件...

Java基礎知識 集合框架

student arr new student 5 儲存學生物件 arr 0 new student 張三 23 arr 1 new student 李四 24 arr 2 new student 王五 25 arr 3 new student 趙六 26 arr 4 new student 馬哥 ...

JAVA集合相關基礎知識

1 collection 是集合的頂層結構,定義了集合的共性功能。1.1 成員方法 a 新增功能 boolean add object obj 往集合中新增乙個元素 boolean addall collection c 往集合中新增多個元素 b 刪除功能 void clear 清空所有元素 boo...