Mep集合的思维导图
一.Mep集合的特点
1、和set集合一样,具有无序性的特点。
package com.xyl.mep;
import java.util.HashMap;
import java.util.Map;
/**
* Map集合特点
* 1,增删改查
* 2,键值对形式存在
* 3,key值可以为空
*/
public class Demo1 {
public static void main(String[] args) {
Map<String, Object> map=new HashMap<>();
//增加
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put(null, "6");
System.out.println(map);
//删除 移除的元素返回的类型是它本身的Key
System.out.println(map.remove("d"));
System.out.println(map);
//修改 在Map集合中没有下标,键是唯一的
map.put("c", 5);
System.out.println(map);
//查询
System.out.println(map.get("a"));
}
}
输出结果:
{null=6, a=1, b=2, c=3, d=4}
4
{null=6, a=1, b=2, c=3}
{null=6, a=1, b=2, c=5}
1
二、Map集合遍历的方式:
1、entrySet(先获取所有的键,在获得值)
代码如下:
Map<String, Object> map=new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Set<String> set=map.keySet();
for (String key : set) {
System.out.println("key:"+key+";value="+map.get(key));
}
2、keySet
Set<Entry<String, Object>> entrySet = map.entrySet();
for (Entry<String, Object> entry : entrySet) {
System.out.println("key:"+entry.getKey()+";value="+entry.getValue());
}
三、常用实现类HashMap ,统计字符串中的字母出现的次数
代码:
package com.xyl.mep;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Dome3 {
public static void main(String[] args) {
String s="adsjflascdkjxncjvkwjoindsklnkajflkajodcnalkdfnaknfadsfsdcncxzvds";
char[] chars = s.toCharArray();
Map<Character, Integer> map=new HashMap<Character, Integer>();
for (char c : chars) {
Integer num=map.get(c);
if(num==null||num==0) {
map.put(c, 1);
}else {
map.put(c, num+1);
}
}
Set<Entry<Character, Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
}
}
}
输出结果:
a出现了7次
c出现了5次
d出现了8次
f出现了5次
i出现了1次
j出现了6次
k出现了7次
l出现了4次
n出现了7次
o出现了2次
s出现了6次
v出现了2次
w出现了1次
x出现了2次
z出现了1次
四、泛型方法:
1、作用:
(1)将运行时产生的异常转换为编译期的错误
(2)提高代码的健壮性
以筛选出值为偶数的键为例
代码如下:
public class Demon4 {
public static void main(String[] args) {
Map<String, Object> map=new HashMap<>();
map.put("s", 1);
map.put("a", 2);
map.put("d", 3);
map.put("e", 4);
map.put("f", "星星");
Set<Entry<String,Object>> entrySet = map.entrySet();
for (Entry<String, Object> entry : entrySet) {
Object value = entry.getValue();
Integer val=(Integer)value;
if(val%2==0) {
System.out.println("偶数对应的key为:"+entry.getKey());
}
}
}
}
输出结果:
这里报错了,错误的意思是无法将string类型转换为int类型
但是如果定义了泛型,他会直接在编译时报错
代码如下:
将泛型定义好之后,直接在编译时报错,一目了然。
五、集合框架工具包
1、Collections
排序:
package com.xyl.mep;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Dome5 {
public static void main(String[] args) {
List<User> list=new ArrayList<>();
list.add(new User("aa", 16000));
list.add(new User("bb", 12000));
list.add(new User("cc", 26000));
list.add(new User("dd", 14000));
Collections.sort(list,new Comparator<User>(){
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
return o1.getQian()-o2.getQian();
}
});
for (User u : list) {
System.out.println(u);
}
String[] arr=new String[] {"a","b","c","d","e","f"};
System.out.println(Arrays.toString(arr));
List<String> asList = Arrays.asList(arr);
System.out.println(asList);
Integer[] ar = new Integer[] {1,7,3,6,5,4,2,8};
Arrays.sort(ar);
System.out.println(Arrays.toString(ar));
}
}
输出结果:
2.Arrays
(1).toString
代码如下:
String[] arr=new String[] {"a","b","c","d"};
System.out.println(Arrays.toString(arr));
运行结果如下:
(2).asList
将数组变成集合来操作时,不能违背数组本身特点。
List<String> asList = Arrays.asList(arr);
(3).Sort
Integer[] ar=new Integer[] {1,7,3,4,9 };
Arrays.sort(ar);
System.out.println(Arrays.toString(ar));
输出:
[1,3,4,7,9]