Map
特点:
- Map每个元素由键与值两部分组成,Map中的key和value 可以时任何引用类型的数据,会封装到HashMap$Node对象中
- Map键不能重复,每个键对应一个值
- 键和值可以为null
- key不可用重复,value可重复,如果添加相同的key,则会覆盖原来的key-value(key不会更改,value会)
- key可以为null,value也可以为null,注意key只能有一个null,value可以有多个null
- 常用String类来作为key
- key和value时一一对应的关系,通过指定的key总能找到对应的value
- 无序,底层是哈希表实现的
常用方法:
- put:添加元素
- remove:删除键映射关系
- get:根据键获取值
- size获取元素个数
- isEmpty:判断个数是否为0
- clear:清空集合
- containKey:查找键是否存在
Map的几大遍历方式:
- 增强for循环
//第一种,增强for循环
//先取出所有的key
Set keyset = map.keySet();
for (Object key : keyset) {
System.out.println(key+" "+map.get(key));
}
- 迭代器
//第二种迭代器
Set keyset = map.keySet();
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key+" "+map.get(key));
}
- 取出所有的value,进行value循环 增强for
//取出所有的value
Collection values = map.values();
//可使用2种遍历Collections的方式
//增强for
for (Object value : values) {
System.out.println(value);
}
- 迭代器 遍历value
Collection values = map.values();
Iterator iterator1 = values.iterator();
while (iterator1.hasNext()) {
Object next = iterator1.next();
System.out.println(next);
}
- 通过EmtrySet 增强for
原理:Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
//将entry转成Map.Entry
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey()+" "+m.getValue());
}
- 迭代器
//使用EntrySet
Set entrySet = map.entrySet();
Iterator iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
Object entry = iterator2.next();
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey()+" "+m.getValue());
}
HashMap
特点:
- Map接口常用的实现类:HashMap HashTable和Properties
- HashMap时Map接口中使用频率最高的类
- 没有实现同步,线程不安全
HashTable
特点:
- 存放元素时键值对即:k-v
- HashTable的键和值都不能为null,否则会抛出异常
- HashTable是线程安全的
- HashTable 的使用方法跟HashMap类似
Properties
特点:
- Properties类继承HashTable类并且实现了Map接口,也是一种键值对的形式来保存数据,键值不能为null
- 使用特点和HashTable类似
- Properties还可以用于从xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改
- 说明:在实际工作中,xxx.properties文件通常作为配置文件。