集合框架-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);
}
}
}
相關文章
- Java集合框架List,Map,Set等Java框架
- Redis 入門 - 3(集合 set、有序集合 sort set)Redis
- 集合框架-TreeMap集合框架
- 集合框架-TreeSet集合框架
- 集合框架-Collection集合框架
- 集合框架-List集合框架
- 「譯」Java集合框架系列教程四:Set介面Java框架
- 【集合框架】Java集合框架綜述框架Java
- Python set(集合)Python
- 集合框架-集合總結框架
- 集合框架-List集合-2框架
- 集合框架-List集合-3框架
- 集合框架-Collection集合-2框架
- 集合框架-Collection集合-3框架
- 集合框架-Map集合功能概述框架
- 集合框架-HashMap集合的案例框架HashMap
- Java集合(1)一 集合框架Java框架
- 集合框架-Collection集合總結框架
- 集合框架框架
- Redis 有序集合(sorted set)Redis
- python-集合setPython
- 集合框架-Map集合的遍歷框架
- List集合(ArrayList-LinkedList);Set集合(HashSet-TreeSet)
- Java集合框架系列教程一:集合框架簡介Java框架
- Java 集合框架Java框架
- 集合框架-Collections框架
- java集合框架Java框架
- Redis的集合型別(Set)Redis型別
- Redis的有序集合(sorted set)Redis
- Java集合(六) Set詳解Java
- python 集合型別 setPython型別
- 【Java集合原始碼剖析】Java集合框架Java原始碼框架
- 集合框架-集合的巢狀遍歷框架巢狀
- 【JAVA集合】JAVA集合框架及其常用方法Java框架
- Python&Redis 無序集合set、有序集合zset操作PythonRedis
- 【java】【集合】set集合、唯一性保證、Linkset、案例Java
- 「譯」Java集合框架系列教程二:集合介面Java框架
- js資料結構--集合(set)JS資料結構