HashSer集合中的元素实际上是放在HashMap集合中的key部分 特点无序不重复
TreeSet特点:无序不可重复,但会自动排序,称为可排顺序集合
Map
常用方法
|
V | put(K key, V value) 向Map集合中添加键值对。 |
V | get(Object key) 通过key获取value。 |
V | remove(Object key) 通过key删除键值对。 |
boolean | containsKey(Object key) 判断Map中是否包含某个key。 |
boolean | containsValue(Object value) 判断Map中是否包含某个value。 |
Set<K> |
(HashSet集合的元素存储在HashMap中的key部分) |
Collection<V> | values() 获取Map集合中所有的value,返回一个collection集合 |
int | size() 返回此映射中的键-值映射关系数。 |
boolean | isEmpty() 判断集合元素个数是否为0。 |
void | clear() 从此映射中移除所有映射关系。 |
Set<Map.Entry<K,V>> | entrySet() 将Map集合转换成Set集合 |
- 代码测试
//创建Map集合对象
Map<Integer,String> map = new HashMap<>();
//向Map集合添加键值对
map.put(1,"张三");
map.put(2,"李四");
map.put(3,"王五");
//通过key获取value
System.out.println(map.get(2)); //李四
//获取键值对数量
System.out.println("键值对数量:"+map.size()); //键值对数量:3
//获取所有values
Collection<String> values = map.values();
for(String s : values){
System.out.println(s); //张三 李四 王五
}
//通过key删除value
map.remove(2);
System.out.println(map.get(2)); //null
System.out.println("键值对数量:"+map.size()); //键值对数量:2
//判断是否包含某个key、value
// (contains方法底层调用的是equals,所以自定义类型需要重写equals方法)
System.out.println(map.containsKey(2)); //false
System.out.println(map.containsValue("李四")); //false
//清空map集合
map.clear();
//判断是否为空
System.out.println(map.isEmpty()); //true
遍历Map集合
- 方式1:获取key的set集合,通过遍历获取value(效率较低)
// 第一种方式:获取所有的key,通过遍历key,通过key获取value
Map<Integer,String> map = new HashMap<>();
map.put(1,"张三");
map.put(2,"王五");
map.put(3,"赵六");
//先获取所有的key,所有的key是一个set集合
Set<Integer> keys = map.keySet();
//遍历key,通过key获取value
//迭代器 或 foreach
Iterator<Integer> it = keys.iterator();
while(it.hasNext()){
Integer key = it.next();
String value = map.get(key);
System.out.println(value);
}
- 方式2:通过entrySet()转换为Set集合,取出每个node(节点)的key、value值。(效率较高)
// 第二种方式:Set<Map.Entry<K,V>> entrySet() 效率较高
//以上方法是将Map集合直接全部转换成Set集合
//Set集合中的元素类型是:Map.Entry
Set<Map.Entry<Integer,String>> set = map.entrySet();
//遍历Set集合,每一次取出一个Node,获取key value
//(1)迭代器的方式遍历
Iterator<Map.Entry<Integer,String>> it2 = set.iterator();
while(it2.hasNext()){
Map.Entry<Integer,String> node = it2.next();
Integer key = node.getKey();
String value = node.getValue();
System.out.println(key + "=" + value); //1=张三2=王五3=赵六
}
//(2)foreach方式遍历
for(Map.Entry<Integer,String> node : set){
System.out.println(node.getKey() + "=" + node.getValue());
}