1. 程式人生 > >陣列的特點,陣列的使用,連結串列的特點,set和list的區別,arrayList,linkedList,的常用方法,set,hashset,

陣列的特點,陣列的使用,連結串列的特點,set和list的區別,arrayList,linkedList,的常用方法,set,hashset,

陣列的特點:

陣列的長度一旦定義則不能改變

陣列中的元素都有整數索引

陣列只能儲存同一型別的元素

陣列即可以儲存基本資料型別,又可以儲存引用資料型別

陣列的使用:

獲取元素。通過索引獲取,arr[2];

新增元素(在元素3後面新增一個新元素8):要先建立新的陣列,長度為原先的陣列長度+1;遍歷原先的陣列,並將要新增的元素插入到新的陣列當中

當碰到元素3的時候,在元素3後面新增新的元素8,最後把剩餘的元素新增到元素8的後面

陣列的特點:查詢快,增刪慢。

連結串列:由鏈子連結起來的一堆結點

結點結構:地址值,值,下一個結點的地址值

獲取結點:只能遍歷連結串列,然後一個一個檢視

新增結點(在結點2後面新增一個結點

9):

把結點2的下一個結點地址值修改為新結點9的地址值,把新結點9的下一個地址值改為結點3的地址值

連結串列特點:查詢慢,增刪快;

棧:先進後出(彈夾), 佇列:先進先出()

List特點和特有功能:

要想用遍歷集合的自定義物件必須在自定義物件的類中重寫tostring方法才可以。

List:有序的(儲存和讀取的順序是一致的)

有整數索引

允許重複

Set:無序的

無索引

元素不可以重複

List的特有功能:

Void  add(int   index, E  slement);在指定索引位置新增指定元素,本來的元素向後排

 E  get(int  index);根據索引返回元素,沒有元素的時候會出現越界異常

E  remove(int   index);:刪除指定索引的元素,返回被刪除的元素

E  set(int  index, E  element);:修改指定索引位置的元素,替換成指定元素,返回被體替換的元素

//建立物件 。使用特有功能

List list = new  ArrayList();

List.add(1, hello)

List  的常用子類:

Arraylist底層結構是陣列,查詢快,增刪慢

LinkedList底層結構是連結串列,查詢慢。增刪快

linkedList的特有功能:

Void addFirstE e;將元素新增到索引為0的為位置(最前位置)、

Void addLast

E e):將索引新增到索引為size()-1的位置(最後的位置)

E getFirst():獲取索引為0 的元素

E getLast():獲取索引為size()-1的元素

E  removeFirst():刪除索引為0的元素,並返回被刪除的元素

E  removeLast():刪除索引為size()-1的元素,並返回被刪除的元素

建立物件

LinkedLIST  list = new linkdlist();

Alt+shift+R  改元素的名字  (可以將名字一樣的一塊改掉)

SET介面:        

使用HashSet儲存字串並遍歷:

Set的特點無序(儲存和讀取的順序可能不一樣);

不允許重複

沒有整數索引

//建立物件

HashSet<String>  set = new HashSet<String>();

//新增元素

Boolean   boo  =  set.add(“hello”)   返回的是新增成功不成功

//遍歷集合物件

增強for  

ForString s set{

Sysos);

}

使用HashSet存數自定義物件(不去重(先比hash值,自定義的hash值就是他們自己的地址值,他們地址值都不一樣所以直接新增,不去重))並遍歷:

//通過檢視原始碼發現:

HashSET  ADD()方法,首先會使用當前集合的每一元素和新新增的元素進行hash值進行比較,如果hash不一樣,則直接新增元素。如果hash值一樣,比較地地址或者使用equals方法進行比較,比較結果一樣則認為是重複,不新增,所有的比較結果都不一樣則新增

建立物件

HashSet<Student>  set = new HashSet<Student>();

重寫HashCode方法和equals方法實現HashSet儲存自定義物件去重

在自定義的類中重寫hashcode方法,返回相同值,讓其執行重寫的equals方法;

自動重寫HashCodeequals方法是altshiftsh

優化前(重寫的方法1,2

1重寫equals方法時需要向下轉型,獲取子類特有的成員。(判斷如果不同,return  false;)

2重寫HashCode方法,讓其方法體返回相同內容即可(就可以繼續比較執行equals方法),例如(return  1;)

優化後(hashCode的方法體,讓基本資料型別直接相加,讓引用資料的hashcode值進行相加)