目录
Map集合
-
map集合特点
- map集合是以键值对的形式存在,所以增删改查与list,set集合有所不同
存放方式:
Map<Object,Object> m=new HashMap<Object,Object>();
前面的泛型代表键的类型,后面则是值的类型。map集合的‘键’和‘值’,都可以为空。
增:
m.put("a", 1);
map集合添加值的方法为put,并且键和值要一起放入,键在map集合中是唯一的。
删:
Object remove(Object key);//通过键,删除键值对,返回被删除的值
boolean remove(Object key, Object value) ;//通过键值对删除键值对,返回是否删除成功
改:
由于map中键唯一存在,所以用put方法将已存在的值覆盖
m.put("a", 1);
m.put("a", 2);
则“a”所对应的值为2
查:
Object get(Object key);
-
遍历方式
两种:
1.先拿到所有的键,在通过键的集合拿到所有的值
Set set = m.keySet();
for (Object object : set) {
System.out.println(m.get(object));
}
2.直接拿到所有的键值对
Set<Entry<Object, Object>> entrySet = m.entrySet();
for (Entry<Object, Object> e : entrySet) {
System.out.println(e.getKey()+"--"+e.getValue());
}
- HashMap
使用最频繁的map集合
面试题:如何得到一个字符串中一个字符出现的次数。
1.首先将字符串转化为字符数组
2.遍历字符数组
3.用每一个字符去作为键,在map中取值,如果去不到,则代表未出现过,则放入该键,并将其值赋为1,反之,如果取到了,则在其基础上加1
4.所得map集合即为所求。
String str="ndskjfdfsahflasdfeiofnasdfjndaskjfnkdjglhdskjafhdsjfk";
char[] cs = str.toCharArray();
Map<Character, Integer> m=new HashMap<Character, Integer>();
for (char c : cs) {
Integer i = m.get(c);
if(i==null||i==0) {
m.put(c, 1);
}else {
m.put(c, i+1);
}
}
Set<Entry<Character, Integer>> entrySet = m.entrySet();
for (Entry<Character, Integer> e : entrySet) {
System.out.println(e.getKey()+"---"+e.getValue());
}
得出结果
泛型
-
是什么
一种不确定的数据类型
-
为什么需要泛型
当多种数据类型都有可能执行相同的代码时使用
可以将运行时产生的异常转化到编译时