專門用來存放其它類的物件,這個類就叫做容器,或者就叫做集合,集合就是將若干性質相同或相近的類物件組合在一起而形成的乙個整體
陣列也可以用於儲存多個物件,那麼為什麼要引入容器呢?
引入容器的原因:
1、陣列的長度難以擴充
2、陣列中資料的型別必須相同
容器與陣列的區別與聯絡:
1、容器不是陣列,不能通過下標的方式訪問容器中的元素
2、陣列的所有功能通過容器都可以實現
3、如果要將容器當做乙個陣列來使用,通過toarraylist方法返回的就是乙個陣列
list:儲存一組不唯一,有序的物件;
set:儲存一組唯一,無序的物件;
map:以鍵值對方式儲存物件
arraylist:適合於查詢和更新元素,其中的元素可以為null
①新增元素的方法 add (object obj)
②在指定位置新增元素add(int index,object obj) //在指定的索引位置上新增元素物件,表示在某一位置增加某一物件,原位置的物件後移
③集合中元素的個數 size()
④addall(collection c)向集合中新增另乙個集合的所有元素
⑤remove(object obj)刪除某個物件
⑥remove(int index)根據索引去刪除
⑦判斷contains()
⑧清空集合中所有的元素物件 clear()
⑨get(int index)獲取指定索引位置上的元素物件
⑩設定set() ,原來位置的物件被覆蓋,返回的是原來位置的元素
linkedlist底層資料結構是鍊錶,刪除和新增元素的效率比較高,資料結構複雜 arraylist底層資料結構是陣列, 刪除和新增元素效率比較低
set介面:hashset底層陣列結構使用的是hash表 ,主結構陣列, +鍊錶 適用於訪問和查詢。
常用方法與arraylist大致相似
注意:set介面儲存的是無序唯一的物件,當儲存自己定義的物件時,需重新equals方法用於判斷是否重複
public class person
public void setname(string name)
public int getage()
public void setage(int age)
public person(string name, int age)
public person()
//person類必須重寫hashcode()方法及equals()方法
@override
public int hashcode()
//重寫equals方法,此處設定為名字和年齡同時相等才算是重複
@override
public boolean equals(object obj) else if (!name.equals(other.name))
return false;
return true;
} @override
public string tostring()
}
map介面:
map介面的特點,key不允許重複,值可以重複,而且key是無序的
①put新增元素,集合中的key不能重複,如果重複,將進行值的覆蓋
②containskey()判斷是否包含某個鍵;containsvalue()判斷是否包含某個值
③get()獲得元素
④keyset()獲取所有key的集合
⑤values(),獲取所有的value的集合,values(),結果是乙個collection,獲取是乙個值的集合
⑥entryset()獲取所有key-value關係的集合,,獲取所有鍵值關係的集合,結果是乙個set
得到鍵值對的關係:
對於list集合:
/** (1)使用加強for迴圈遍歷集合中的元素 */
system.out.println("\n使用加強for迴圈遍歷集合中的元素\n");
for (object obj : list)
/** (2)使用普通for迴圈遍歷集合中的元素物件 */
system.out.println("\n使用普通for迴圈遍歷集合中的元素物件\n");
for (int i = 0; i < list.size(); i++)
/** (3)使用迭代器 iterator只能正向遍歷,listiterator可以逆向遍歷*/
system.out.println("\n使用迭代器遍歷集合中的元素\n");
iterator ite = list.iterator(); // 正向遍歷
while (ite.hasnext())
system.out.println("使用listiterator()遍歷");
listiterator listite = list.listiterator();
system.out.println("正向遍歷");
system.out.println("在集合的開頭,後面還有元素物件嗎?" + listite.hasnext());
system.out.println("在集合的開頭,前面有元素物件嗎?" + listite.hasprevious());
while (listite.hasnext())
system.out.println("到達集合的末尾,後面還有元素物件嗎?" + listite.hasnext());
system.out.println("到達集合的末尾,前面有元素物件嗎?" + listite.hasprevious());
system.out.println("\n逆向遍歷集合中的元素\n");
while (listite.hasprevious())
}
set介面:
// 使用迭代器遍歷元素
iterator ite = hs.iterator();
while (ite.hasnext())
map介面:
//第一種
setset=hm.keyset();
for (string str : set)
system.out.println("************************");
//第二種遍歷 entry鍵值關係的型別
set> entry=hm.entryset();
for (entryent : entry)
對list中的資料排序:可以使用collections的sort方法進行排序,按照元素的自然順序公升序排序(整數型則按大小,字串按ascii碼值排序)
comparator介面:可以將comparator傳遞給sort方法
int compare(t o1,t o2 )比較用於排序的兩·個·引數,o1o2返回正整數。
comparable介面:compareto(t o)該物件小於、等於或者大於指定對,則分別返回負整數、零或正整數
java基礎 資料容器之Map HashMap
資料容器 在程式 中,用來暫時儲存資料的 盒子 容器 用於後續的邏輯處理。為什麼需要map?map是資料容器中的一種資料結構,首先它是用來儲存資料的 其次,與其它資料容器不同,它是一種可以通過業務資料來快速 精確檢索另乙個業務資料的資料結構。map 是一種key value的資料結構 key和val...
iOS基礎之容器
cocoa touch基礎框架提供比較常用的容器類物件 nsarray nsdicitonary nsset nsindex 1.nsarray和它的子類nsmutablearray 它們相當於陣列,可以持有不同型別的objective c物件,其他型別。比如說c型別的整型 浮點型 列舉型和結構體指...
java容器之Map介面
hashmap類 在介紹hashmap之前,有必要介紹下關於雜湊表的知識。太久沒用到雜湊表,沒想到一時竟然忘記了它的存在的意義了,看來不多做筆記真不行 雜湊表 支援以常數時間對任何命名項的檢索或刪除。為什麼能夠這麼會有這種效果呢?原理是 定義乙個空的tablesize大小陣列,每個要插入元素根據雜湊...