JavaSE教程_进阶
void:clear() 清空集合中所有的<键,值>对
boolean:containsKey(Object key) 判断是否包含指定的键
boolean:containsValue(Object value) 判断是否包含指定的值
Set>:entrySet() 返回所有Entry的集合, 一个<键,值>对就是一个Entry
boolean:equals(Object o)
V:get(Object key) 返回键对应的值
boolean:isEmpty() 判断集合是否为空
Set:keySet() 返回键的集合
V:put(K key, V value) 添加对, 如果key键已存在,使用value值替换原来的值
void:putAll(Map m) 把m集合中所有的<键,值>对添加到当前集合中
V:remove(Object key) 只要key匹配就删除对应的<键,值>对
default boolean:remove(Object key, Object value) 删除
default V:replace(K key, V value) 使用value值替换key原来的值
int:size() 返回<键,值>对的数
Collection:values() 返回所有值的集合
package com.wkcto.chapter05.map;
import java.util.HashMap;
import java.util.Map;
/**
* 演示Map的基本操作
* @author 蛙课网
*
*/
public class Test01 {
public static void main(String[] args) {
//1) 创建Map集合, 用来保存<员工姓名,员工工资>
//Map是一个接口,需要赋值实现类对象
Map<String, Integer> map = new HashMap<>();
//2) 添加数据
map.put("feifei", 30000);
map.put("bin", 40000);
map.put("zhang", 50000);
map.put("yong", 100000);
//3) 直接打印, 存储顺序与添加顺序可能不一致
System.out.println( map );
//{bin=40000, yong=100000, zhang=50000, feifei=30000}
//4)添加重复的键, 如果键重复,会使用新的value值替换原来的值, Map中的键不能重复的
map.put("bin", 40001);
System.out.println( map );
//5)修改
map.replace("feifei", 30002);
map.replace("yan", 6666); //替换时, 如果键不存在,替换不成功
System.out.println( map );
//6)判断
System.out.println( map.isEmpty() );
System.out.println( map.size());
System.out.println( map.containsKey("feifei"));
System.out.println( map.containsValue(100000));
System.out.println( map.get("yong"));
System.out.println( map.get("cui")); //如果键不存在, 返回null
//7) 删除
map.remove("bin", 40000); //删除<"bin", 40000>对, 要求键与值都匹配才能删除
System.out.println( map ); //{bin=40001, yong=100000, zhang=50000, feifei=30002}
map.remove("yong"); //只要键匹配就删除
System.out.println( map );
}
}
package com.wkcto.chapter05.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* Map的遍历
* @author 蛙课网
*
*/
public class Test02 {
public static void main(String[] args) {
//1)创建Map集合
Map<String, Integer> map = new HashMap<>();
//2) 添加数据
map.put("feifei", 30000);
map.put("bin", 40000);
map.put("zhang", 50000);
map.put("yong", 100000);
//3) 获得所有键的集合,
Set<String> keySet = map.keySet();
System.out.println( keySet );
//4) 所有值的集合
Collection<Integer> values = map.values();
Iterator<Integer> iterator = values.iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
System.out.print( integer + "\t");
}
System.out.println();
//5)所有entry的集合, 一个Entry就是一个<键,值>对
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println( entry.getKey() + " : " + entry.getValue());
}
}
}
练习
package com.wkcto.chapter05.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* 统计字符串中每个 字符出现的次数
* a : 12
* c : 5
* d : 23
*
* @author 蛙课网
*
*/
public class Test03 {
public static void main(String[] args) {
String text = "afdfasfafasfdaczadsfazcvafdfcvfdfdaadvavdavfdaav zcvafdafadfvczxvzvafdafad";
//1) 定义一个Map保存<字符, 出现的次数>结果
Map<Character, Integer> map = new HashMap<>();
//2) 遍历字符串中的每个 字符
for( int i = 0 ; i < text.length(); i++){
char cc = text.charAt(i); //取出对应的字符
//如果字符不是第一次出现, 把原来的次数 加 1
if ( map.containsKey(cc) ) { //Map集合中的键包含cc这个字符
Integer count = map.get(cc); //把cc字符原来的次数取出来
map.replace(cc, count + 1 ); //把cc字符的次数加1, 保存到map中
}else{
//如果是第一次出现, 把<字符, 1 > 保存到集合中
map.put(cc, 1);
}
}
//3) 打印结果
Set<Entry<Character, Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println( entry.getKey() + " : " + entry.getValue());
}
}
}