好好學習,天天向上。
如果涉及到堆疊,佇列等操作,應該考慮用list。
對於需要快速插入,刪除元素,應該使用linkedlist。
如果需要快速隨機訪問元素,應該使用arraylist。
如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。
在除需要排序時使用treeset,treemap外,都應使用hashset,hashmap,因為他們 的效率更高。
要特別注意對雜湊表的操作,作為key的物件要正確複寫equals和hashcode方法。
容器類僅能持有物件引用(指向物件的指標),而不是將物件資訊copy乙份至數列某位置。一旦將物件置入容器內,便損失了該物件的型別資訊。
盡量返回介面而非實際的型別,如返回list而非arraylist,這樣如果以後需要將arraylist換成linkedlist時,客戶端**不用改變。這就是針對抽象程式設計。
1、collection沒有get()方法來取得某個元素。只能通過iterator()遍歷元素。
2、set和collection擁有一模一樣的介面。
3、list,可以通過get()方法來一次取出乙個元素。使用數字來選擇一堆物件中的乙個,get(0)…。(add/get)
4、一般使用arraylist。用linkedlist構造堆疊stack、佇列queue。
5、map用 put(k,v) / get(k),還可以使用containskey()/containsvalue()來檢查其中是否含有某個key/value。
hashmap會利用物件的hashcode來快速找到key。
6、map中元素,可以將key序列、value序列單獨抽取出來。
使用keyset()抽取key序列,將map中的所有keys生成乙個set。
使用values()抽取value序列,將map中的所有values生成乙個collection。
為什麼乙個生成set,乙個生成collection?那是因為,key總是獨一無二的,value允許重複。
1.1、collection 和 map 的區別
容器內每個為之所儲存的元素個數不同。
collection型別者,每個位置只有乙個元素。
map型別者,持有 key-value pair,像個小型資料庫。
1.2、各自旗下的子類關係
collection
–list:將以特定次序儲存元素。所以取出來的順序可能和放入順序不同。
–arraylist / linkedlist / vector
–set : 不能含有重複的元素
–hashset / treeset
map
–hashmap
–hashtable
–treemap
1.3、其他特徵
list,set,map將持有物件一律視為object型別。
collection、list、set、map都是介面,不能例項化。
繼承自它們的 arraylist, vector, hashtable, hashmap是具象class,這些才可被例項化。
vector容器確切知道它所持有的物件隸屬什麼型別。vector不進行邊界檢查。
java List Set Map集合遍歷
遍歷集合的方式無非就是使用for迴圈,增強for迴圈或迭代器這幾種方式。1.遍歷list list遍歷 author zc public class testlist iterator it set.iterator while it.hasnext 在使用增強for迴圈遍歷時,採用這種結構訪問 f...
Java List Set Map 集合框架 泛型
set 介面 map 介面 list公用方法 booleanadd obj voidadd intx,obj intsize objectget intx booleancontains obj booleanremove obj objectremove intx linkedlist特殊方法 v...
訓練集 驗證集 測試集
訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...