集合框架-Set集合
1:Set集合(理解)
普通for迴圈是list集合特有的,遍歷set集合、增強for和迭代器可以
(1)Set集合的特點
無序,唯一
package cn.itcast_01;
import java.util.HashSet;
import java.util.Set;
/*
* Collection
* |--List
* 有序(儲存順序和取出順序一致),可重複
* |--Set
* 無序(儲存順序和取出順序不一致),唯一
*
* HashSet:它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。就是說這次測得是這樣、下次可能會變化
* 注意:雖然Set集合的元素無序,但是,作為集合來說,它肯定有它自己的儲存順序,
* 而你的順序恰好和它的儲存順序一致,這代表不了有序,你可以多儲存一些資料,就能看到效果。
*/
public class SetDemo {
public static void main(String[] args) {
// 建立集合物件
Set<String> set = new HashSet<String>();
// 建立並新增元素
set.add("hello");
set.add("java");
set.add("world");
set.add("java");
set.add("world");
// 增強for
for (String s : set) {
System.out.println(s);
}
}
}
(2)HashSet集合(掌握)
A:底層資料結構是雜湊表(是一個元素為連結串列的陣列)
B:雜湊表底層依賴兩個方法:hashCode()和equals()
執行順序:
首先比較雜湊值是否相同
相同:繼續執行equals()方法
返回true:元素重複了,不新增
返回false:直接把元素新增到集合
不同:就直接把元素新增到集合
C:如何保證元素唯一性的呢?
由hashCode()和equals()保證的
D:開發的時候,程式碼非常的簡單,自動生成即可。
E:HashSet儲存字串並遍歷
F:HashSet儲存自定義物件並遍歷(物件的成員變數值相同即為同一個元素)
package cn.itcast_02;
import java.util.HashSet;
/*
* HashSet:儲存字串並遍歷
* 問題:為什麼儲存字串的時候,字串內容相同的只儲存了一個呢?
* 通過檢視add方法的原始碼,我們知道這個方法底層依賴 兩個方法:hashCode()和equals()。
* 步驟:
* 首先比較雜湊值
* 如果相同,繼續走,比較地址值或者走equals()
* 如果不同,就直接新增到集合中
* 按照方法的步驟來說:
* 先看hashCode()值是否相同
* 相同:繼續走equals()方法
* 返回true: 說明元素重複,就不新增
* 返回false:說明元素不重複,就新增到集合
* 不同:就直接把元素新增到集合
* 如果類沒有重寫這兩個方法,預設使用Object()的。一般來說不會相同。
* 而String類重寫了hashCode()和equals()方法,所以,它就可以把內容相同的字串去掉。只留下一個。
*/
public class HashSetDemo {
public static void main(String[] args) {
// 建立集合物件
HashSet<String> hs = new HashSet<String>();
// 建立並新增元素
hs.add("hello");
hs.add("world");
hs.add("java");
hs.add("world");
// 遍歷集合
for (String s : hs) {
System.out.println(s);
}
}
}
相關文章
- Python set(集合)Python
- Hash Map集合和Hash Set集合
- python-集合setPython
- List集合(ArrayList-LinkedList);Set集合(HashSet-TreeSet)
- for...of 迴圈, Set (集合)
- python 集合型別 setPython型別
- Set集合類_演練
- 集合框架框架
- Python&Redis 無序集合set、有序集合zset操作PythonRedis
- Python學習之set集合Python
- 【java】【集合】set集合、唯一性保證、Linkset、案例Java
- java集合框架Java框架
- Java 集合框架Java框架
- 【Java集合原始碼剖析】Java集合框架Java原始碼框架
- 【JAVA集合】JAVA集合框架及其常用方法Java框架
- js資料結構--集合(set)JS資料結構
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSetJava
- 4、Set集合——HashSet、TreeSet(Comparable、Comparator)
- Set集合的直接子類TreeSet
- 10.集合框架框架
- Set集合的具體子類:HashSet
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- 集合框架體系概述框架
- 集合框架能否存null框架Null
- Java基礎-集合框架Java框架
- JAVA集合框架 - Map介面Java框架
- Java集合框架隨筆Java框架
- Java集合框架學習Java框架
- Java集合框架(一)-ArrayListJava框架
- 集合框架2- ArrayList框架
- JAVA集合:常見Set原始碼學習Java原始碼
- python-資料型別之set集合Python資料型別
- redis 有序集合(sorted set)(redis學習七)Redis
- MySQL:MGR 學習(1):寫集合(Write set)MySql
- python學習筆記24_集合set( )Python筆記
- Java內功心法,Set集合的詳解Java
- ES6中的Map與Set集合
- Java 中的泛型 集合(List,Set) MapJava泛型