HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap<Integer, String> ret= new HashMap<Integer, String>();//定义哈希表
//增
hashmap.put(1, "str1"); // 执行后为{1=str1}
hashmap.put(2, "str2"); // 执行后为{1=str1, 2=str2}
//删
hashmap.remove(1); // 执行后hash表内为{2=str2}
hashmap.remove(2); // 执行后hash表内为{}
//改:替换指定的key对应的 value
hashmap.replace(key,value);
//查:根据key来访问value
hashmap.get(1); // 返回str1
//清空
hashmap.clear();
//计算键对的数量
hashmap.size();
//当hashmap中有这个key时,就用对应的value,没有的话用默认值defaultValue;
hashmap.getOrDefault(key,defaultValue);
//检查是否存在对应的映射关系
hashmap.containsKey(key); //key对应的映射关系
hashmap.containsValue(value); //value对应的映射关系
hashmap.isEmpty(); //是否为空
hashmap.values(); // 返回所有Value值组成的集合
//现有HashMap: {1=str1, 2=str2}
//则返回Values: [str1, str2]
// foreach循环
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
HashSet
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
Set<Integer> hashset= new HashSet<Integer>();//定义
hashset.add(1);//增
hashset.remove(1);//删
//使用 contains() 方法来判断元素是否存在于集合当中:
hashset.contains();
//大小
hashset.size();
// 清空
hashmap.clear();
//迭代
HashSet<String> hashset= new HashSet<String>();
hashset.add("str1");
hashset.add("str2");
hashset.add("str3");
hashset.add("str2"); // 重复的元素不会被添加
for (String i : hashset) {
System.out.println(i);
/*输出:
str1
str2
str3
*/