package com.itheima.demo03.Map;java
import java.util.HashMap;
import java.util.LinkedHashMap;安全
/*多線程
java.util.LinkedHashMap<K,V> entends HashMap<K,V> Map 接口的哈希表和連接列表實現,具備可預知的迭代順序。 底層原理: 哈希表+鏈表(記錄元素的順序)
*/
public class Demo01LinkedHashMap {線程
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.put("a","a"); map.put("c","c"); map.put("b","b"); map.put("a","d"); System.out.println(map);// key不容許重複,無序 {a=d, b=b, c=c} LinkedHashMap<String,String> linked = new LinkedHashMap<>(); linked.put("a","a"); linked.put("c","c"); linked.put("b","b"); linked.put("a","d"); System.out.println(linked);// key不容許重複,有序 {a=d, c=c, b=b} }
}code
package com.itheima.demo03.Map;接口
import java.util.HashMap;
import java.util.Hashtable;字符串
/*get
java.util.Hashtable<K,V>集合 implements Map<K,V>接口 Hashtable:底層也是一個哈希表,是一個線程安全的集合,是單線程集合,速度慢 HashMap:底層是一個哈希表,是一個線程不安全的集合,是多線程的集合,速度快 HashMap集合(以前學的全部的集合):能夠存儲null值,null鍵 Hashtable集合,不能存儲null值,null鍵 Hashtable和Vector集合同樣,在jdk1.2版本以後被更先進的集合(HashMap,ArrayList)取代了 Hashtable的子類Properties依然活躍在歷史舞臺 Properties集合是一個惟一和IO流相結合的集合
*/
public class Demo02Hashtable {it
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.put(null,"a"); map.put("b",null); map.put(null,null); System.out.println(map);//{null=null, b=null} Hashtable<String,String> table = new Hashtable<>(); //table.put(null,"a");//NullPointerException //table.put("b",null);//NullPointerException table.put(null,null);//NullPointerException }
}io
package com.itheima.demo03.Map;
import java.util.HashMap;
import java.util.Scanner;
/*
練習: 計算一個字符串中每一個字符出現次數 分析: 1.使用Scanner獲取用戶輸入的字符串 2.建立Map集合,key是字符串中的字符,value是字符的個數 3.遍歷字符串,獲取每個字符 4.使用獲取到的字符,去Map集合判斷key是否存在 key存在: 經過字符(key),獲取value(字符個數) value++ put(key,value)把新的value存儲到Map集合中 key不存在: put(key,1) 5.遍歷Map集合,輸出結果
*/
public class Demo03MapTest {
public static void main(String[] args) { //1.使用Scanner獲取用戶輸入的字符串 Scanner sc = new Scanner(System.in); System.out.println("請輸入一個字符串:"); String str = sc.next(); //2.建立Map集合,key是字符串中的字符,value是字符的個數 HashMap<Character,Integer> map = new HashMap<>(); //3.遍歷字符串,獲取每個字符 //注意這裏的char for(char c :str.toCharArray()){ //4.使用獲取到的字符,去Map集合判斷key是否存在 if(map.containsKey(c)){ //key存在 Integer value = map.get(c); value++; map.put(c,value); }else{ //key不存在 map.put(c,1); } } //5.遍歷Map集合,輸出結果 //注意這裏的Character for(Character key :map.keySet()){ Integer value = map.get(key); System.out.println(key+"="+value); } }
}