package com.itheima.demo03.Map;
import java.util.HashMap;
import java.util.LinkedHashMap;
/*
java.util.LinkedHashMapentends HashMap Map 接口的哈希表和鏈接列表實(shí)現(xiàn),具有可預(yù)知的迭代順序。 底層原理: 哈希表+鏈表(記錄元素的順序)
*/
public class Demo01LinkedHashMap {
public static void main(String[] args) { HashMapmap = new HashMap<>(); map.put("a","a"); map.put("c","c"); map.put("b","b"); map.put("a","d"); System.out.println(map);// key不允許重復(fù),無(wú)序 {a=d, b=b, c=c} LinkedHashMap linked = new LinkedHashMap<>(); linked.put("a","a"); linked.put("c","c"); linked.put("b","b"); linked.put("a","d"); System.out.println(linked);// key不允許重復(fù),有序 {a=d, c=c, b=b} }
}
package com.itheima.demo03.Map;
import java.util.HashMap;
import java.util.Hashtable;
/*
java.util.Hashtable集合 implements Map 接口 Hashtable:底層也是一個(gè)哈希表,是一個(gè)線程安全的集合,是單線程集合,速度慢 HashMap:底層是一個(gè)哈希表,是一個(gè)線程不安全的集合,是多線程的集合,速度快 HashMap集合(之前學(xué)的所有的集合):可以存儲(chǔ)null值,null鍵 Hashtable集合,不能存儲(chǔ)null值,null鍵 Hashtable和Vector集合一樣,在jdk1.2版本之后被更先進(jìn)的集合(HashMap,ArrayList)取代了 Hashtable的子類Properties依然活躍在歷史舞臺(tái) Properties集合是一個(gè)唯一和IO流相結(jié)合的集合
*/
public class Demo02Hashtable {
public static void main(String[] args) { HashMapmap = new HashMap<>(); map.put(null,"a"); map.put("b",null); map.put(null,null); System.out.println(map);//{null=null, b=null} Hashtable table = new Hashtable<>(); //table.put(null,"a");//NullPointerException //table.put("b",null);//NullPointerException table.put(null,null);//NullPointerException }
}
package com.itheima.demo03.Map;
import java.util.HashMap;
import java.util.Scanner;
/*
練習(xí): 計(jì)算一個(gè)字符串中每個(gè)字符出現(xiàn)次數(shù) 分析: 1.使用Scanner獲取用戶輸入的字符串 2.創(chuàng)建Map集合,key是字符串中的字符,value是字符的個(gè)數(shù) 3.遍歷字符串,獲取每一個(gè)字符 4.使用獲取到的字符,去Map集合判斷key是否存在 key存在: 通過字符(key),獲取value(字符個(gè)數(shù)) value++ put(key,value)把新的value存儲(chǔ)到Map集合中 key不存在: put(key,1) 5.遍歷Map集合,輸出結(jié)果
*/
public class Demo03MapTest {
public static void main(String[] args) { //1.使用Scanner獲取用戶輸入的字符串 Scanner sc = new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)字符串:"); String str = sc.next(); //2.創(chuàng)建Map集合,key是字符串中的字符,value是字符的個(gè)數(shù) HashMapmap = new HashMap<>(); //3.遍歷字符串,獲取每一個(gè)字符 //注意這里的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集合,輸出結(jié)果 //注意這里的Character for(Character key :map.keySet()){ Integer value = map.get(key); System.out.println(key+"="+value); } }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75302.html
摘要:從代碼上看字典也是在哈希表基礎(chǔ)上再抽象了一層而已。在中,哈希表實(shí)際上就是數(shù)組鏈表的形式來構(gòu)建的。后,在哈希沖突時(shí)是將新的節(jié)點(diǎn)添加到鏈表的表尾。在對(duì)哈希表進(jìn)行擴(kuò)展或者收縮操作時(shí),過程并不是一次性地完成的,而是漸進(jìn)式地完成的。 前言 只有光頭才能變強(qiáng) showImg(https://segmentfault.com/img/remote/1460000016837794); 最近在學(xué)Red...
摘要:使用默認(rèn)隨機(jī)源對(duì)指定列表進(jìn)行置換。將集合排序使用二分搜索法搜索指定列表,以獲得指定對(duì)象根據(jù)元素的自然順序,返回給定的最大元素。 1_Map集合概述和特點(diǎn) A:Map接口概述 查看API可以知道: 將鍵映射到值的對(duì)象 一個(gè)映射不能包含重復(fù)的鍵 每個(gè)鍵最多只能映射到一個(gè)值 B:Map接口和Collection接口的不同 Map是雙列的,Collection是單列的 Map...
摘要:第三階段常見對(duì)象的學(xué)習(xí)集合框架集合在實(shí)際需求中,我們常常會(huì)遇到這樣的問題,在諸多的數(shù)據(jù)中,通過其編號(hào)來尋找某一些信息,從而進(jìn)行查看或者修改,例如通過學(xué)號(hào)查詢學(xué)生信息。面試題和的區(qū)別是單列集合的頂層接口,有子接口和。 第三階段 JAVA常見對(duì)象的學(xué)習(xí) 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...
摘要:我們?cè)跀?shù)組系列一之棧與隊(duì)列中介紹了一些數(shù)組的用法。該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。今天我們就說這么多,希望你有所收獲,接下來還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來說數(shù)組的其他一系列的方法。 我們?cè)凇禷vascript數(shù)組系列一之棧與隊(duì)列》中介紹了一些數(shù)組的用法。比如:數(shù)組如何表現(xiàn)的和「?!挂粯?,用什么方法表現(xiàn)的和「隊(duì)列」一樣等等一些方法,因?yàn)?...
閱讀 1207·2023-04-26 00:34
閱讀 3381·2023-04-25 16:47
閱讀 2152·2021-11-24 11:14
閱讀 3132·2021-09-26 09:55
閱讀 3796·2019-08-30 15:56
閱讀 3238·2019-08-29 16:57
閱讀 1938·2019-08-26 13:38
閱讀 2693·2019-08-26 12:22