什么是HashMap?
HashMap是实现Map<K,V>接口的一个实体类,它对键值做了一对一的映射关系,当然里面键值不能重复。Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。
import java.util.*;
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
主要用法见:菜鸟教程:
1 | void clear( ) 从此映射中移除所有映射关系(可选操作)。 |
2 | boolean containsKey(Object k) 如果此映射包含指定键的映射关系,则返回 true。 |
3 | boolean containsValue(Object v) 如果此映射将一个或多个键映射到指定值,则返回 true。 |
4 | Set entrySet( ) 返回此映射中包含的映射关系的 Set 视图。 |
5 | boolean equals(Object obj) 比较指定的对象与此映射是否相等。 |
6 | Object get(Object k) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 |
7 | int hashCode( ) 返回此映射的哈希码值。 |
8 | boolean isEmpty( ) 如果此映射未包含键-值映射关系,则返回 true。 |
9 | Set keySet( ) 返回此映射中包含的键的 Set 视图。 |
10 | Object put(Object k, Object v) 将指定的值与此映射中的指定键关联(可选操作)。 |
11 | void putAll(Map m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
12 | Object remove(Object k) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
13 | int size( ) 返回此映射中的键-值映射关系数。 |
14 | Collection values( ) 返回此映射中包含的值的 Collection 视图。 |
Map.getOrDefault(Object key, V defaultValue);
如果在Map中存在key,则返回key所对应的的value。如果在Map中不存在key,则返回默认值。
例子 查现有的map中是否有key为num的,若没有则创建个key为num,value为1的映射;若有,则为当前映射value + 1
map.put(num, map.getOrDefault(num, 0) + 1);
Map.Entry和Map.entrySet()
具体讲解链接:
列子:通过Map.entrySet遍历key和value,并且打key和value放入entry中。
for (Map.Entry<Integer, Integer> entry : map.entrySet()){}
什么是HashSet?
HashSet是实现Set<E>接口的一个实体类,数据是以哈希表的形式存放的,里面的不能包含重复数据。Set接口是一种一个不包含重复元素的 collection。
set的各种方法
增加
set.add(null);
删除
set.remove(news);
对比查找
set.contains(news);
清空集合
set.clear();
获取长度
set.size();