collection 總介面
--| list 特徵 有序 可重複
----| arraylist 底層維護的是乙個object型別的陣列,如果使用無參構造方法建立arraylist集合,預設的容量為10
用帶有引數的構造方法,建立arraylist集合,傳入的initcapacity是多少,容量就是多少
特徵: 增刪慢 查詢快
newcapacity = oldcapacity + (oldcapacity >> 1) 二進位制位運算
----| linkedlist 底層維護的是乙個雙向鍊錶 特徵是增刪快 查詢慢
----| vector 執行緒安全的arraylist 和arraylist基本相同,jdk1.0的古老產物。效率低於arraylist
--| set 特徵 無序 不可重複
----| hashset 底層維護是乙個雜湊表,儲存效率極高
乙個自定義類物件放入到hashset中,需要經歷如下過程:
通過當前類物件的hashcode,獲取到當前類物件的雜湊值,進行移位運算,計算出當前元素應該儲存到雜湊表中的位置。
情況1: 當前位置沒有元素,直接放入
情況2: 當前位置已經存在其他元素。需要呼叫該元素的equals方法,進行比較,如果比較結果為兩個元素不同,能夠放入,兩個元素相同,不能放入。
----| treeset 樹形結構的set集合
能夠放入treeset中的元素必須有自然順序,或者提供【比較規則】
乙個自定義類物件,想要放入到treeset集合中,有兩種方式
1. 當前類【遵從】comparable介面,實現compareto(object o)方法
2. 實現乙個自定義的比較器【遵從】comparator介面,實現compare(object o1, object o2)方法
collection中的方法
//新增方法:list中的方法add(object
o) //新增指定元素
addall(collection
c) //新增指定集合
//刪除方法:
remove(object
o) //刪除指定元素
removeall(collection
c) //輸出兩個集合的交集
retainall(collection
c) //保留兩個集合的交集
clear() //清空集合
//查詢方法:
size() //集合中的有效元素個數
toarray() //將集合中的元素轉換成object型別陣列
//判斷方法:
isempty() //判斷是否為空
equals(object
o) //判斷是否與指定元素相同
contains(object
o) //判斷是否包含指定元素
containsall(collection
c) //判斷是否包含指定集合
//新增方法:arraylist中特有的方法add(int
index, object
o) //向指定位置新增元素
addall(int
index, collection
c) //向指定位置新增集合
//刪除方法
remove(int
index) //刪除指定元素
//查詢方法:
get(int
index) //獲取指定位置的元素
indexof(object
o) //獲取指定元素的位置
lastindexof(object
o) //獲取指定元素最後一次出現的位置
//修改方法:
sublist(int
fromindex, int
toindex) //擷取子集合從fromindex到toindex,要頭不要尾
set(int
index, object
o) //修改指定位置的元素
ensurecapacity(intlinkedlist中特有的方法mincapactiy) //判斷當前陣列中的元素個數是否大於指定的mincapacity
trimtosize() //修改陣列容量為當前陣列有效元素個數
//查詢方法:collection中的迭代器iterator方法getfirst() //獲取集合中的第乙個元素
getlast() //獲取集合中的最後乙個元素
//新增方法:
addfirst(object
o) //在集合的第乙個位置新增指定元素
addlast(object
o) //在集合的最後乙個位置新增指定元素
//刪除方法:
removefirst() //刪除集合中的第乙個元素
removelast() //刪除集合中的最後乙個元素
iteratorlist中的迭代器 listiterator方法iterator(); //迭代器構造方法
boolean
hasnext() //判斷是否有下乙個元素
object
next() //獲取當前元素
void
remove() //刪除通過next()獲取的元素,在next()之後使用,不可以單獨使用
listiteratorset中的方法listiterator(); //迭代器建構函式
boolean
hasnext() //判斷是否有下乙個元素
boolean
hasprevious() //判斷是否有上乙個元素
object
next() //獲取當前元素
object
previous() //獲取上乙個元素
void
remove() //刪除通過next()獲取的元素,在next()之後使用,不可以單獨使用
add(object
o) //新增指定元素
set(object
o) //修改指定元素
intnextindex() //獲取當前元素所在位置
set介面沒有特有的方法,collection中的方法在這裡全部適用
Collectio中的Set介面
set介面 儲存無序的,不可重複的元素。set中常用的方法都是collection下定義的。主要包括hashset linkedhashset和treeset。往set中新增元素的時候,首先計算這個元素的雜湊值,根據這個雜湊值來決定儲存在記憶體的哪個位置上。如果這個位置上已經儲存了其他元素,及根據e...
solr 建立指定路由的collection
1.登入solr其中乙個例項所在的主機 2.生成配置檔案 solrctl instancedir generate home solr configs 修改solrconfig.xml 和 schema.xml 3.上傳配置到zk solrctl instancedir create home so...
java中的演算法
第一種 迴圈 for int x 1 x 500 x 第二種 bigdecimal double x 0 double y 0 bigdecimal xbig new bigdecimal x bigdecimal ybig new bigdecimal y bigdecimal result ne...