Java資料結構

2021-08-16 10:46:24 字數 894 閱讀 7797

arraylist

基於 array,在記憶體中占有連續空間,所以get(index)時候,根據陣列首位址+偏移量就可以取到值

linklist

基於link,在記憶體中不連續,每個元素只知道下乙個元素,所以get時候,只能從首元素開始乙個乙個去找,效率相對較慢

增加刪除

arraylist 需要變動陣列,將乙個陣列的東西變化到另外乙個陣列

linklist 只需要改變某個元素的引用就可以,所以效率更高

set 

元素不相同,比較基礎 equals不相等

類 預設equals比較的是位址(==效果相同),是否指向同乙個堆記憶體裡物件

hashset

由於set必須保證不相等,那麼元素多的時候,插入乙個新元素就會導致比較很多次

為了提高效率,採用hashcode先做比較,hashcode採用乙個雜湊函式,比較效率較快

當之前沒有該hashcode則,直接放入set

如果有相同hashcode,則再呼叫比較equals方法

相同則不放入,不同再放入,同時將

相同hashcode的元素做乙個集合儲存(hash桶),方便後面使用

物件的預設hashcode是基於記憶體位址來做,可以唯一

treeset

集合中的元素有序,且唯一,但元素必須實現comparable,或者構造 treeset時候構建compartor

hashmap

key-value

key是基於hashset來做

如果乙個類可以作為key,如果他的equals方法被重寫,那麼同時一定要去重寫hashcode

能保證equals true時,hashcode一定相等

java 資料結構

private void initmap log.d tag,map.tostring log.d tag,weakmap.tostring log.d tag,treemap.tostring log.d tag,hamap.tostring log.d tag,linkmap.tostring ...

java資料結構 佇列

1.用鍊錶實現單向佇列 package com.jzm.stackqueuetree public class linkqueue end constructor private class node end constructor private t getdata private node ge...

java資料結構 堆

1.由於用陣列來模擬堆的資料存放比較方便,且陣列0號位置作為哨兵 package com.jzm.heapmap public class maxheap public maxheap int size end constructor public boolean isempty 判斷是否為空 pu...