版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Haidaiya/article/details/82915772
1 Map
单列集合底层是双列集合
2 Map的基本方法
package com.haidai.Map;
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
//Map是接口,父类引用指向子类对象
Map<String, Integer> m = new HashMap<>();
m.put("王磊", 24);//添加
m.put("王亿", 24);
m.clear();//删除全部
m.put("王二", 24);
m.put("王三", 24);
m.remove("王二");//按照键删除
boolean containsKey = m.containsKey("王磊");//是否包含键
boolean containsValue = m.containsValue(24);//是否包含值
boolean empty = m.isEmpty();//是否为空
System.out.println(containsKey);
System.out.println(containsValue);
System.out.println(empty);
}
}
3 Map集合的遍历
package com.haidai.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* Map集合是不能迭代的,那么双列集合是如何迭代呢?
* 方法1:keySet+get获得
* 方法2:fore遍历
* 方法3:获取键值对对象
*
*/
public class Demo2 {
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<>();
m.put("王磊", 24);//添加
m.put("王亿", 24);
m.put("王二", 24);
m.put("王三", 24);
//demo1(m);
//方法2
//demo2(m);
//方法3
demo3(m);
//方法4
for(Entry<String,Integer> en : m.entrySet()) {
System.out.println(en.getKey()+"="+en.getValue());
}
}
private static void demo3(Map<String, Integer> m) {
Set<Entry<String,Integer>> en = m.entrySet();
Iterator<Entry<String, Integer>> it = en.iterator();
while(it.hasNext()) {
Entry<String, Integer> entry = it.next();
System.out.println(entry.getKey()+"="+entry.getValue());
}
}
private static void demo2(Map<String, Integer> m) {
for (String key : m.keySet()) {
System.out.println(key+"="+m.get(key));
}
}
private static void demo1(Map<String, Integer> m) {
Set<String> keySet = m.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
String key = it.next();
Integer value = m.get(key);
System.out.println(key+"="+value);
}
}
}
4 如何保证键的唯一性
5 LinkedHashMap和TreeMap
6 统计字符串中字符的重复个数
package com.haidai.Map;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
/*
* 统计字符串中字符出现的个数
*/
public class Demo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] strArr = str.toCharArray();
HashMap<Character, Integer> hm = new HashMap<>();
for(int i = 0; i < strArr.length;i++) {
if(hm.containsKey(strArr[i])) {
int value = hm.get(strArr[i])+1;
hm.put(strArr[i], value);
}else {
hm.put(strArr[i], 1);
}
}
Set<Entry<Character,Integer>> enSet = hm.entrySet();
for(Entry<Character,Integer> en : enSet) {
System.out.println(en.getKey()+"="+en.getValue());
}
}
}