java面试题map,map实现了什么接口

  java面试题map,map实现了什么接口

  本文已经给大家带来了一些关于java的知识,包括Map接口的使用和面试知识点的一些问题,包括Map接口的存储特点,常用的实现类,创建方法,常用方法等等。下面就一起来看看吧,希望对你有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  

Map接口

  

存储特点

  存储为键值对。

  键是无序的,没有下标,元素不能重复。

  值是无序的,无下标的,元素可以重复。

  

常用实现类

  散列表

  JDK1.2底层哈希表实现线程是不安全高效的LinkedHashMap。

  JDK1.2是HashMap的子类,底层哈希表的线程是不安全的,所以TreeMap是高效的。

  JDK1.2是SortedMap的实现类,底层红黑树实现线程不安全,哈希表效率高。

  JDK1.0的底层哈希表实现了线程安全和低效率属性

  JDK1.0是HashTable的子类,底层哈希表是线程安全的,效率很低

创建方法

  使用多态tips:一个键值对才是一个元素

  

常用方法

   value put (key,value):将键值对添加到集合的末尾。

  如果该键已经存在,则替换值void clear():清空集合元素。

  Boolean containsKey:确定集合中是否存在某个键。

  Boolean containsValue:确定集合中是否有值。

  Get (key):获取键对应的值。

  Boolean isEmpty():确定集合的内容是否为空,不能比较空值。

  Voidputall(地图的集合名称):将指定地图集合的内容添加到当前集合的末尾。

  Value remove:删除与键对应的键-值对。

  Int size():获取集合中键值对的数量。

  代码举例:

  公共类测试{

  公共静态void main(String[] args) {

  //数字字符串1-1-yi

  MapInteger,String map=new HashMapInteger,String();

  Map.put(1, one );

  map.put(111,一一一);

  map.put(666,六六六);

  Map.put(111, 111 );

  system . out . println(map . contains key(678));//f

  system . out . println(map . contains value( yiyiyi ));//t

  system . out . println(map . get(111));

  map . remove(666);

  system . out . println(map . get(666));

  system . out . println(map . size());//2

  }}

遍历方法

   1、keySet()+get()

  首先获取所有的键,然后遍历这些键来获取所有的值。Set keys的Generic keySet():获取所有键并存储在Set集合中,返回//获取所有键。

  集合关键字的一般集合=集合名称;keySet();

  //遍历所有键

  set.forEach(

  哦-

  //o表示当前正在遍历的键。

  //对应的值可以通过集合名称获得。得到(o)

  );例如map integer,string map=new hashmap();

  map.put(123,一二三);

  map.put(234,二三四);

  map.put(456,四五六);

  map.put(999,九九九);

  set integer set=map . keyset();

  set . foreach(o-system . out . println( key: o ,value: map . get(o)));2、values()

  直接获取所有值。

  集合值的Generic values():获取集合集合中存储的所有值并返回它们。

  Generic coll=集合名称。集合值的values();Coll.forEach(v- v代表当前值);如:collection string coll=map . values();

  coll . foreach(v-system . out . println(v));3、entrySet()

  获取键值以遍历对象。

  map.entry key的Generic和value的generic entrySet():获取所有的键-值对并将它们存储在Set set中并返回它们。

  集合映射的泛型。条目键和值泛型相当于设置键-值对对象。

  GetKey():获取Entry对象中的键。

  GetValue():获取Entry对象中的值。

  //获取键值对对象的集合

  map.entry键的Generic,值集2的generic=collection name . entry set();

  对于(图。Entry entry : set2) {

  //通过entry.getKey()获取密钥

  //通过entry.getValue()获取值

  }如:SetMap的泛型。Entry键,值集2的泛型=集合名. entry set();

  对于(图。Entry entry : set2) {

  system . out . println( key: entry . getkey(),value: entry.getValue())

  }

  System.out.println(lambda自遍历:);

  2.foreach(entry-system . out . println( key: entry . getkey(),value: entry . getvalue()));4、自遍历forEach

  JDK8.0集合名称。foreach(新双消费键和值的泛型(){

  @覆盖

  Public void accept(键的泛型I,值的泛型s) {

  //i代表key。

  //s表示值。

  }

  });

  System.out.println(lambda简化自遍历:);

  Map.forEach((k,v)- k代表key,v代表value);比如:

  map . foreach(new biconsumer integer,String() {

  @覆盖

  public void accept(整数I,字符串s) {

  System.out.println (key: i ,value: s);

  }

  });

  System.out.println(lambda简化自遍历:);

  Map.foreach ((k,v)-system.out.println (key: k ,value: v));

不同实现类的使用

   HashMap可以存储空值,key可以存储0-1个空值,values可以存储0-n个空值。

  LinkedHashMap可以保证存取顺序的一致性。

  默认情况下,TreeMap可以根据关键字进行升序排序。

  默认情况下,不能对null进行排序。如果键是自定义类型,则必须以与TreeSet相同的方式设置排序规则。HashTable不能存储空值。

  属性和值必须是字符串类型

  不建议创建多态性。不能声明泛型

集合面试知识点补充

   Set是一个有键但没有值的映射集合。

  底部数组长度为16。

  阵列负载系数为75%。当数组位使用率达到75%时,数组将以平衡二叉树的形式展开。展开长度为原长度*2,展开长度为每个数组长度都为16

  为什么存储数值时集合或映射由小到大?

  当存放数值过小时,整数值本身就是它的存放下标,下标从小到大,所以值的存放也是从小到大红黑树使用二分查找方法,具有查询效率快的特征。

  红黑树:以哈希码值作为判断标准。如果哈希代码值大于当前元素,则存储在右侧,如果哈希代码值小于当前元素,则存储在左侧。

  二分查找法:特点是一次锁定一半数据。

  当哈希表数组中的链表长度达到8时,将为重组链表元素,打开红黑树。

  推荐:《java视频教程》以上是Java中Map接口使用的详细内容和面试知识点的总结。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: