18(Map,HashMap,LinkedHashMap,TreeMap)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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());
		}
	}

}

7 Collections是工具类

8 泛型固定上下边界

猜你喜欢

转载自blog.csdn.net/Haidaiya/article/details/82915772