Java中集合類容器初步了解
容器(Collection)
數組是一種容器,集合也是一種容器
java編程中, 裝其他各種各樣的對象(引用類型)的一種東西, 叫容器
(圖書館裏所有的書, 要想管理圖書館裏所有的書, 就需要先把這些書放到一個東西裏面, 目前掌握的知識來說, 只能是數組, 數組的長度是固定的,
這就出現 一個問題, 數組的長度該定義成多長 ? 長度是不固定的, 因為不知道有多少本書, 這個時候需要這樣一種機制:
定義一種東西, 長度不固定, 可以隨時添加和刪除, 這種東西就是Collection, 只要不超出內存, 隨便往裏添加)
Collection---接口:
Set接口
*HashSet---實現類(以哈希碼表為底層的實現機制)
TreeSet---實現類(以二叉樹(一種數據結構)為底層的實現機制)
沒有順序, 不可以重復(可以互相equals就叫重復)
!List接口
*ArrayList---實現類(以數組為底層的實現機制)
LinkedList---實現類(以鏈表為底層的實現機制)
有順序, 可以重復
ArrayList(API中說初始容量為10的, 註意這個問題), LinkedList
有順序, 可以重復添加
get
set(有一個返回值要註意 !)
add()
remove(int)
remove(Object)
indexOf
lastIndexOf
!Map接口(鍵值對)
*HashMap---實現
TreeMap---實現類
每次往裏放的時候都是一對一對的
HashMap(哈希表做索引), TreeMap(二叉樹做索引)
鍵值對(鍵不能重復, 什麽叫重復)
put(為什麽有個返回值啊親 ?)
get
remove(為什麽也有個返回值啊親 ?)
containsKey
containsValue
size
isEmpty
putAll
clear
Collection接口的方法
Collection接口的使用
代碼實例: eclipse--com.test3
Collection<String> c = new ArrayList<String>();
問題: 為什麽不直接寫ArrayList<String> a = new ArrayList<String>();
c.add(參數類型必須是Object)
c.remove方法: 通過判斷兩個對象是否互相的equals來確定是不是該刪除該對象, 自定義的類, 需要自己重寫父類的equals方法
重寫equals方法, 也應該重寫hashCode方法
hashCode通常用來做索引, 一個對象通過它的hashCode的值可以找到它在內存中的地址, 所以兩個對象如果equals了,
而且又要作為索引的情況下, hashCode的值必須相等
練習:使用String[] args在命令行上檢測輸入的字符串數組各自出現的次數
package com.maya.test; import java.awt.List; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class Lianxi { public static void main(String[] args) { Map c = new HashMap(); ArrayList l = new ArrayList(); for(int i=0; i<args.length;i++){ if(c.get(args[i])==null){ c.put(args[i], 1); }else{ int valu = (int)c.get(args[i])+1; c.put(args[i], valu); } } System.out.println(c); } }
Java中集合類容器初步了解