linuxmap对象如何根据键修改值?
定义mapkey,valuemapData;
第一种:
假设修改key1对应的值,则
可以mapData[key1]修改值
此种简单,但是回存在某种情况就是key1根本不存在而此时这么操作的话,那么key1和对应的值将自动以新的键值对插入到mapData中
第二种:
常见的循环遍历整个map,匹配到与key1相同的时候,通过此时迭代器来修改值。就可以完成修改
Map接口将键映射到值,键可以重复吗?
Map接口将键映射到值,键不可以重复的。map是keyvalue结构,key可以为null到不可以重复。
ThreadLocal是什么?
ThreadLocal是线程本地存储,在每个线程中都创建了一个ThreadLocalMap对象,每个线程可以访问自己内部ThreadLocalMap对象内的value。
map的底层结构是什么?
Map是以键值对(Key-Value)来存储对象的,它的底层结构实际上由数组和链表来组成的;
使用pett方法时,先查数组位置是否为对象,通过key.hashcode对数组长度取余;
存在,则把里面的链表拿出来,判断链表里面是否存在key值相互匹配的对象,
如果存在就将查到的key值对应的value替换,不存在则通过链表的remove()方法直接加在链表后面;
当使用get方法时,先查找出数组位置是否存在对象,通过key.hashcode
对数组长度取余;
如果不存在,则返回为空,如果存在,则遍历链表,
判断链表里面是否存在key值与传递过来的key值一样的对象,存在,则把key值对应的value取出返回,不存在,则返回为空;
什么是MAP?
这个是JDK1.5以后出现的新特性的写法Mapkey1,value1mapnull;表示的是这个map的key必须是key1类型,value必须是value1类型。
譬如你声明一个MapString,Listmapnull;如果你要放入map.put(cab,Integer),就不可以了。而拿取得时候,这样声明,不用强制转换。譬如Listlist(bac);