集合【LinkedList、HashSet、Collection集合體系】,linkedlisthashset

來源:互聯網
上載者:User

集合【LinkedList、HashSet、Collection集合體系】,linkedlisthashset

java.util.List(集合)介面 extends Collection(集合) 介面
List集合的特點:
1.有序的集合:存入元素的順序,和取出元素的順序是一致的(存入:1,2,3 取出:1,2,3)
2.允許有重複的元素
3.有索引
特有的方法:包含索引的方法
add(int index, E e)在指定的索引上添加元素
E remove(int index)移除並返回,指定索引上的元素
E set(int index, E e) 修改並傳回值指定索引上的元素
E get(int index) 返回列表中指定位置的元素。

注意:
操作索引,一定不要索引越界,否則會報索引越界異常
IndexOutOfBoundsException:索引越界異常(集合會報)
StringIndexOutOfBoundsException:字串索引越界異常
ArrayIndexOutOfBoundsException:數組索引越界異常

E set(int index, E e) 修改並傳回值指定索引上的元素
List<Double> list
Double set(int index, E e) 修改並傳回值指定索引上的元素

E remove(int index)移除並返回,指定索引上的元素
List<Integer> list
Integer remove(int index)移除並返回,指定索引上的元素


add(int index, E e)在指定的索引上添加元素
List<String> list
add(int index, String e)在指定的索引上添加元素

java.util.LinkedList集合 implements List 介面
LinkedList集合是一個雙向鏈表:可以保證迭代順序(有序集合)

LinkedList集合有大量操作首尾的方法,要使用LinkedList中特有的方法,不能使用多態
E removeFirst() 移除並返回此列表的第一個元素。
E pop() 移除並返回此列表的第一個元素。 此方法等效於 removeFirst()。
E removeLast() 移除並返回此列表的最後一個元素。

E getFirst() 返回此列表的第一個元素。
E getLast() 返回此列表的最後一個元素。
boolean isEmpty() 如果列表不包含元素,則返回 true。
//linked.clear();
為了防止NoSuchElementException沒有元素異常
擷取元素之前,增加一個非空判斷
boolean isEmpty() 如果列表不包含元素,則返回 true。
void addFirst(E e) 將指定元素插入此列表的開頭。
void push(E e) 將該元素插入此列表的開頭。 此方法等效於 addFirst(E)。
void addLast(E e) 將指定元素添加到此列表的結尾。相當於 add(E e)

使用List儲存的資料結構
堆棧:先進後出
隊列:先進先出
數組:查詢快,增刪慢
鏈表:查詢慢,增刪快

java.util.Set集合 extends Collection集合
Set集合的特點:
1.沒有索引,不能使用普通for遍曆
2.不能儲存重複的元素

java.util.HashSet集合 implements Set集合
HashSet集合的特點:
1.沒有索引,不能使用普通for遍曆
2.不能儲存重複的元素
3.是一個無序的集合(存入和元素和取出元素的順序可能不一致)
4.底層是一個雜湊表(數組+鏈表):即增刪快,又查詢快


雜湊值:是一個十進位的整數,由作業系統隨機給出
使用Object類中的方法hashCode擷取
int hashCode() 返回該對象的雜湊碼值。

getClass().getName() + '@' + Integer.toHexString(hashCode())
使用反射擷取類名 + @ + 把十進位的hashCode變為十六進位的值

重寫Object類的hashCode方法
public native int hashCode();
發現hashCode上有一個native,調用了作業系統本身的方法,擷取雜湊值

使用HashSet集合儲存字串
HashSet集合保證元素唯一的方法:
1.元素重寫hashCode方法
2.元素重寫equals方法

String類,即重寫hashCode又重寫了equals(比較的是字串的每個字元是否相同)

java.util.LinkedHashSet extends HashSet implements Set
LinkedHashSet集合:雜湊表+鏈表(基於鏈表的雜湊表)
LinkedHashSet集合是一個雙向鏈表可以保證迭代順序


使用HashSet集合儲存自訂類型
要求:同名和同年齡的人視為同一個人,只能儲存一次
HashSet集合保證元素唯一的方法:
1.元素重寫hashCode方法
2.元素重寫equals方法

ArrayList的contains方法判斷元素是否重複原理
每添加一個元素元素的時候,先使用 contains方法判斷集合中是否包含該元素
如果不包含,在添加到集合中
使用HashSet集合過濾ArrayList集合中的重複元素

 1 private static void method_01() { 2         ArrayList<String> list = new ArrayList<String>(); 3         list.add("a"); 4         list.add("a"); 5         list.add("a"); 6         list.add("a"); 7         list.add("a"); 8         list.add("b"); 9         list.add("b");10         list.add("b");11         list.add("b");12         System.out.println(list);13         14         //建立HashSet集合15         HashSet<String> set = new HashSet<String>();16         //遍曆ArrayList集合17         for (String s : list) {18             //把元素添加到set中19             set.add(s);20         }21         System.out.println(set);22     }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.