package com.itheima.demo03.Map;
import java.util.HashMap;
import java.util.LinkedHashMap;
/*
java.util.LinkedHashMapentends HashMap Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。 底层原理: 哈希表+链表(记录元素的顺序)
*/
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不允许重复,无序 {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不允许重复,有序 {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:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢 HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快 HashMap集合(之前学的所有的集合):可以存储null值,null键 Hashtable集合,不能存储null值,null键 Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了 Hashtable的子类Properties依然活跃在历史舞台 Properties集合是一个唯一和IO流相结合的集合
*/
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;
/*
练习: 计算一个字符串中每个字符出现次数 分析: 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是字符的个数 HashMapmap = 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); } }
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75302.html
摘要:从代码上看字典也是在哈希表基础上再抽象了一层而已。在中,哈希表实际上就是数组链表的形式来构建的。后,在哈希冲突时是将新的节点添加到链表的表尾。在对哈希表进行扩展或者收缩操作时,过程并不是一次性地完成的,而是渐进式地完成的。 前言 只有光头才能变强 showImg(https://segmentfault.com/img/remote/1460000016837794); 最近在学Red...
摘要:使用默认随机源对指定列表进行置换。将集合排序使用二分搜索法搜索指定列表,以获得指定对象根据元素的自然顺序,返回给定的最大元素。 1_Map集合概述和特点 A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map...
摘要:第三阶段常见对象的学习集合框架集合在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息。面试题和的区别是单列集合的顶层接口,有子接口和。 第三阶段 JAVA常见对象的学习 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...
摘要:我们在数组系列一之栈与队列中介绍了一些数组的用法。该方法接受两个参数,一个是元素每一项执行的回调函数,一个是可选参数,回调函数运行时的值。今天我们就说这么多,希望你有所收获,接下来还请继续关注,我们继续来说数组的其他一系列的方法。 我们在《avascript数组系列一之栈与队列》中介绍了一些数组的用法。比如:数组如何表现的和「栈」一样,用什么方法表现的和「队列」一样等等一些方法,因为 ...
阅读 1135·2023-04-26 00:34
阅读 3333·2023-04-25 16:47
阅读 2089·2021-11-24 11:14
阅读 3071·2021-09-26 09:55
阅读 3607·2019-08-30 15:56
阅读 3186·2019-08-29 16:57
阅读 1879·2019-08-26 13:38
阅读 2647·2019-08-26 12:22