(一)Map集合的基本特点
-
是映射键值对的形式:<key ,value>
-
Map集合中key唯一,但value可以有重复。
-
Map集合是散列存储的,例如HashMap无序的:Map集合存储的顺序和遍历的顺序是不同的。
-
如果想使用有序的HashMap集合可以使用LinkedHashMap集合,存储顺序与遍历顺序相同
-
Map集合并不能直接new出,因为Map<key,value>是一个接口,不是类。
-
但是可以直接new一个HashMap对象,因为HashMap类实现了Map接口:
将实例化的对象前面的HashMap改为Map,并将尖括号内的Object改为String:改为Map接口来接收。 -
调用put方法存<key,value>数据。输出时直接输出实例化的对象hashmap:
package Test;
import java.util.HashMap;
import java.util.Map;
public class Demo02 {
public static void main(String[] args) {
Map<String, String> hashMap = new HashMap<>();
hashMap.put("001","小王");
hashMap.put("002","小李");
hashMap.put("003","小张");
System.out.println(hashMap);
}
}
注意:原则上key不可以有重复值,如果出现两个相同的key,那么最后出现的value值作为key对应的值,及修改了之前的value。
(二)Map中的常用方法
package Test;
import java.util.HashMap;
import java.util.Map;
public class Demo02 {
public static void main(String[] args) {
Map<String, String> hashMap = new HashMap<>();
//put方法,向集合添加元素
hashMap.put("001","小王");
hashMap.put("002","小李");
System.out.println(hashMap);
//containsKey()判断是否包含某键值,get方法获取key对应的value值。
if (hashMap.containsKey("002")){
System.out.println("存在:"+hashMap.get("002"));
}else {
System.out.println("不存在");
}
//size方法求出集合中元素个数
System.out.println(hashMap.size());
//isempty方法判断是否为空,
System.out.println(hashMap.isEmpty());
//remove方法,根据指定的键值,删除对应的键值对。
hashMap.remove("002");
System.out.println(hashMap);
//clear方法直接清空map集合
hashMap.clear();
System.out.println(hashMap);
}
}
(三)HashSet集合
- hashSet集合是基于HashMap集合实现的,是一个不允许有重复元素的集合。
- HashSet允许有null值。
- HashSet是无序的,不会记录插入时的顺序。
package Test;
import java.util.HashSet;
import java.util.Iterator;
public class HSet03 {
public static void main(String[] args) {
//HashSet集合实现Set接口
HashSet<String> strings = new HashSet<>();
strings.add("001");
strings.add("002");
strings.add("003");
Iterator<String> iterator = strings.iterator();//用string.iterator()得到迭代器,遍历集合
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}