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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。