hashmap遍历

Java集合常见面试题

江枫思渺然 提交于 2020-02-12 02:36:28
适可而止,见好就收 来源主要是 牛客 的Java实习面经。下面的回答直接背就可以,需要一定的Java基础,适合春招实习的同学,但是我会在每个问题下把有助于理解的博客贴出来。如果发现有问题欢迎私聊我或留言我会在下面更新 Map 1. Map的底层结构 腾讯19年秋招 这个题乍一看没有什么思路(因为Map是个集合,当然也有可能是我记错了),所以我们可以先介绍一下Map然后转到HashMap中 Map是一种使用键值对存储的集合。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。 在整个Map系列中,AbstractMap抽象类实现了Map,SortedMap接口继承了Map。而我们常用的HashMap,HashTable,TreeMap和ConcurrentHashMap有继承了AbstractMap类。 其中,HashTable和ConcurrentHashMap是线程安全的。前者是通过synchronized实现的,后者是通过AQS实现的。其中要注意HashTable不能存空值,HashMap是线程不安全的,key可以为空。TreeMap通过二叉树算法实现有序集合,它实现了SortedMap接口 2. HashMap的原理 阿里17年实习,小米19年秋招本科,滴滴19年秋招本科,网易19年秋招本科

java中Map遍历的四种方式

こ雲淡風輕ζ 提交于 2020-02-09 00:01:14
在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历。 方法一:在for循环中使用entries实现Map的遍历: /** * 最常见也是大多数情况下用的最多的,一般在键值对都需要使用 */ Map<String,String> map = new HashMap<String,String>(); map.put("熊大", "棕色"); map.put("熊二", "黄色"); for(Map.Entry<String, String> entry : map.entrySet()){ String mapKey = entry.getKey(); String mapValue = entry.getValue(); System.out.println(mapKey+":"+mapValue); } 方法二:在for循环中遍历key或者values,一般适用于只需要map中的key或者value时使用,在性能上比使用entrySet较好; Map <String,String>map = new HashMap<String,String>(); map.put("name1", "aaa"); map.put("name2", "bbb"); /

java Map 怎么遍历

那年仲夏 提交于 2020-02-07 03:00:29
java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>(); map.put("username", "qq"); map.put("passWord", "123"); map.put("userID", "1"); map.put("email", "qq@qq.com"); Map<String,String> map=new HashMap<String,String>(); map.put("username", "qq"); map.put("passWord", "123"); map.put("userID", "1"); map.put("email", "qq@qq.com"); 第一种用for循环 Java代码 for(Map.Entry<String, String> entry:map.entrySet()){ System.out.println(entry.getKey()+"--->"+entry.getValue()); } for(Map.Entry<String, String> entry:map.entrySet()){ System.out.println(entry.getKey()+"--->"+entry.getValue()); }

map的三种遍历方法!

强颜欢笑 提交于 2020-02-06 19:21:53
  集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cn.tsp2c.liubao; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** * * @author Administrator */ public class TestMap { public static void main(String[] args) { Map<String, Student> map = new HashMap<String, Student>(); Student s1 = new Student("宋江", "1001", 38); Student s2 = new Student("卢俊义", "1002", 35); Student s3 = new Student("吴用", "1003",

Map集合的遍历方式

北城以北 提交于 2020-01-31 04:20:18
1.通过Map.keySet遍历key和value map.keySet()返回的是所有key的值 map.get(in)得到每个key对应value的值 2.通过Map.keySet使用iterator遍历key和value 方法同上 3.通过Map.entrySet遍历key和value map.entrySet() 返回此映射中包含的映射关系的 Set视图。 4.通过Map.entrySet使用iterator遍历key和value 方法同上 import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapTest { public static void main(String[] args) { MapBianli1(); MapBianli2(); MapBianli3(); MapBianli4(); } /** * 获取keySet,得到一个个的key * map.get()获取key所对应的value * */ public static void MapBianli1(){ Map<String,String> map = new HashMap<String, String>(); map.put(

day15_Map

左心房为你撑大大i 提交于 2020-01-29 09:21:26
Map集合 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即 java.util.Map 接口。我们通过查看 Map 接口描述,发现 Map 接口下的集合与 Collection 接口下的集合,它们存储数据的形式不同。Collection 中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map 中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection 中的集合称为单列集合, Map 中的集合称为双列集合。需要注意的是, Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。 总结一下Map集合的特点 Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) Map集合中的元素,key和value的数据类型可以相同,也可以不同 Map集合中的元素,key是不允许重复的,value是可以重复的 Map集合中的元素,key和value是一一对应 Map常用子类 通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。 HashMap :

Map的三种遍历方式

和自甴很熟 提交于 2020-01-27 00:07:51
对于Map的三种方式遍历 1.keySet() 2.values() 3.entrySet() 三种方式得到Set之后,都可以使用 foreach或者iterator, 不能使用for,因为数据结构决定的 package com.fync.jsj.mapTemplate; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.junit.Before; import org.junit.Test; public class MapCycle { Map<Integer, String> map; // 准备好数据 @Before public void testData() { map = new HashMap<>(); map.put(1, "张三"); map.put(2, "李四"); map.put(3, "王五"); map.put(4, "麻子"); map.put(5, "陈六"); }       /** 测试三种方式,这三种方式最后都是遍历Set,于是都可以使用        * foreach或者Iterator       **/ //

面试-Java集合类

こ雲淡風輕ζ 提交于 2020-01-26 07:27:05
1.Java 容器分为 Collection 和 Map 两大类 Collection List(有顺序的collection,并且可以重复) ArrayList , LinkedList, Vector , Stack Set(不包含重复元素的collection) HashSet,LinkedHashSet,TreeSet Map(一组键和值映射的组合,键不能重复) · HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap,Hashtable 2.ArrayList与 LinkedList 1) ArrayList是基于动态数组的数据结构,内存存放地址连续,查询效率比较高,但插入和删除效率比较低。 2) LinkedList是基于链表的数据结构,不需开辟连续的内存空间,插入和删除操作效率比较高,但是查询效率比较低。 适用场景 : 当需要对数据进行多次访问则选择ArrayList,如果需要对数据进行多次增删改选择LinkedList。 3. ArrayList与 Vector 1) vector方法都是同步,线程安全,而ArrayList不是,因此性能比较好。 2) verctor当元素超过初始化的大小时,会自动将容量翻倍,而ArrayList只能50%,更有利于节约空间。 3) vector可设置增长因子。 适用场景 :

Map的三种遍历方式

不想你离开。 提交于 2020-01-24 20:49:51
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cn.tsp2c.liubao; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TestMap { public static void main(String[] args) { Map<String, Student> map = new HashMap<String, Student>(); Student s1 = new Student("宋江", "1001", 38); Student s2 = new Student("卢俊义", "1002", 35); Student s3 = new Student("吴用", "1003", 34); map.put("1001", s1); map.put("1002", s2); map.put("1003", s3); Map

Map 遍历里面的元素

百般思念 提交于 2020-01-23 13:10:36
java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。 了解 Map 接口和方法 Java 核心类中有很多预定义的 Map 类。 在介绍具体实现之前,我们先介绍一下 Map 接口本身,以便了解所有实现的共同点。 Map 接口定义了四种类型的方法,每个 Map 都包含这些方法。 下面,我们从两个普通的方法( 表 1 )开始对这些方法加以介绍。 表 1: 覆盖的方法。 我们将这 Object 的这两个方法覆盖,以正确比较 Map 对象的等价性。 equals(Object o) 比较指定对象与此 Map 的等价性 hashCode() 返回此 Map 的哈希码