Map集合的特点:
* 1、无序
* 2、以键值对方式进行数据存储
* 3、键唯一、值不唯一;当key相同value不同的时候,value会被覆盖
HashMap
HashMap的两种遍历方式:
//1、获取所有的键,根据键取值
Set<String> key = map.keySet();
for (String s : key) {
System.out.println(s+"="+map.get(s));
}
//2、获取所有的键值对
Set<Entry<String, String>> entrySet = map.entrySet();
for (Entry<String, String> entry : entrySet) {
System.out.println(entry.getKey()+"="+entry.getValue());
}
结果都是一样的,根据键值对把map的数据打印出来
put的用法:
* 1、添加元素的同时,它可以编辑原有的元素
* 2、返回替换前key对应的value值
public static void main(String[] args) {
Map<String, String> map=new HashMap<>();
//用来添加元素
map.put("aa", "111");
map.put("bb", "222");
map.put("cc", "333");
map.put("dd", "444");
map.put("ee", "555");
Object a=map.put("aa", "***");
System.out.println(a+":"+map);
}
输出结果为:a就是编辑前的value值,map集合中显示的就是编辑后aa的value值
TreeMap
利用TreeMap实现以下题目
题目一:统计字符串中出现的次数:asdasdfsdfwefhdkajsasjklasjdmasnd,并按照a(2)b(5)c(9)d(7)的格式以及出现的次数进行排序
思路: * 1、将字符串转为字符数组,将这个字符串中的字符当作map集合中的Key,将出现的次数作为value值
- 2、当字符第一次出现的时候,那么用它在集合中进行寻找,返回值必然为null,之后将该字符对应的值改为1
- 3、如果说该字符不是第一次出现,该字符对应的值就不为null,然后就+1;
- 4、然后再按value也就是我们的出现次数进行排序
public class HashMapDemo {
public static void main(String[] args) {
String str="asdasdfsdfwefhdkajsasjklasjdmasnd";
str=count(str);
System.out.println(str);
}
public static String count(String str) {
char[] charArray = str.toCharArray();
Map<Character, Integer> map=new TreeMap<>();
for (char c : charArray) {
Integer value = map.get(c);
if(value==null) {
//如果是第一次,就赋值为1
map.put(c, 1);
}
else {
map.put(c, ++value);
}
}
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(map.