我們可以假設這樣乙個流程:從網路上下來一組json資料,不管同步還是非同步,第乙個就是想先找個容器把他接下來,順手就把list操起來了,然後就一直add,add,,,但是問題來了,我們不管三期二十七的把資料都接下來了,從來就沒注意資料有重複的怎麼去除呢,遍歷吧,又老土有慢;突然想想如果當初用的是hashset該有多好,那麼hashset有什麼好呢,簡單介紹下要點。
hashset,拆解一下,set說明他來自於集合,集合也就意味著,set裡面沒有重複的元素,hash就代表著hash結構,就是鍵值對,hashset的底層就是通過hashmap實現的,它只是封裝了乙個 hashmap 物件來儲存所有的集合元素,所有放入 hashset 中的集合元素實際上由 hashmap 的 key 來儲存,而 hashmap 的 value 則儲存了乙個 present,它是乙個靜態的 object 物件。 注意哦,這裡的hash
set的hash不光要equals,還要hashcode。
那麼問題來了,我能不能把他們混合在一起來實現我的目的呢,請看**:
list listhascup=new arraylist();
listhascup.add(1);
listhascup.add(2);
listhascup.add(3);
listhascup.add(1);
list listnocup=new arraylist(new hashset(listhascup));
恩,,好了,就是這麼簡單,多看原始碼有好處 redis資料結構之List
在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包...
Redis資料結構之list
lpush rpush 從左邊 右邊插入乙個或多個值,類似推箱子。lpop rpop 從左邊 右邊吐出乙個值。值在鍵在,值光鍵亡 rpoplpush 從列表右邊吐出乙個值,插到列表左邊 lrange 按照索引下標獲得元素 從左到右 lindex 按照索引下標獲得元素 從左到右 llen 獲得列表長度...
資料結構 list
實現單鏈表的資料插入和刪除。include include typedef struct listlist void print list list head void insert list list head,int d void delete list list head,int d else...