继上次的ArrayList和 LinkedList之后,接着来介绍Map、Set啦

Map

由 Key、Value对应组成的资料结构

Key Value
US United
es spain
zw zimbab

可以想成 商品(Key)和商品条码(Value)的概念

Key、Value可以为任一类型其中Hashtable、TreeMap、ConcurrenHashMap不允许null为keyJAVA内建的实作有下面这几种HashMap(较常用)LinkedHashMapTreeMapHashtableConcurrenHashMap

再深入Map之前,先来了解Hash

Hash(杂奏)

这边先知道概念~

Hash是一个概念,不是一个固定的方法计算机科学中的一种技术,将数据通过特定的演算法转换成一个固定大小的值(成为哈希值或散列值)

假设我有一个值:123455 >经过hash function >变成一个固定大小的值:drjhilDAGE33fl34

特点:单向操作,无法还原固定大小是由hash function来决定

HashMap

HashMap是MAP界面的的实作特点无序(HashMap的元素和LinkedList一样,是分散在记忆体,而且是透过Key来寻找在记忆体中的位置)允许null的键和null的值键唯一(每个Key都是唯一(只有一个,不能重复),如果重复,插入的值的会覆盖原本的非同步

常见的用法

Map<Type, object> map = new HashMap<使用泛型,不定义型态,在建立物件的时候,由该物件去决定型态>();

Map<String, String> map = new HashMap<>();
map.put("1", "Google");//用 .put 添加元素
map.put("2", "Runoob");
map.put("3", "Taobao");

map.get(3);//取得key为3的值=>Taobao
map.remove(3); //删除key为3的值=>Taobao
map.clear();//删除所有=> {}

HashSet

HashSet<String> set = new HashSet<String>();
set.add("Google"); //HashSet 使用 add添加元素,和HashMap不一样
set.add("Runoob");
set.add("Taobao");
set.add("Zhihu");
set.add("Runoob"); // HashSet不允许重复,因此重复的元素不会被添加
// HashMap则是重复的值会复写原本的值

set.remove("Runoob"); //删除"Runoob" // HashSet删除是直接指定元素删除
set.clear();//删除所有=> {}