java中的map里的value 怎么修改

java中的map里的value 怎么修改,第1张

重新put就可以,前提是你知道key
Map<String, String> map = new HashMap<String, String>();
mapput("key", "123456789");
Systemoutprintln("第一次赋值="+mapget("key"));
mapput("key", "ABCDEFGHIJK");
Systemoutprintln("第二次赋值="+mapget("key"));
第一次赋值=123456789
第二次赋值=ABCDEFGHIJK

1、map,顾名思义就是地图。其实就是key,value的对应的映射。
当需要快速的获取对应key的value的时候,就可以使用map了。例如一个人是有名字,但是这个人还有其他的属性,例如年龄,性别等等。这个人就会被封装为一个对象。如果有很多个人,我们需要快速的根据一个人的名字获取对应名字的对象,这个时候map就有用了。如果采用数组,我们需要遍历整个数组,才可以根据名字找到这个人。如果是map(以名字为key,以人的对象为value),就可以直接根据名字得到这个对象,就不需要遍历 *** 作了。
C++的map是采用红黑树实现的,因此获取value的效率为lgn级别。

2、例子:

map<string,map<string,string>> myMap;
  
map<string,string> childMap1;
childMap1insert("childMap1item1","item1"); 
childMap1["chileMap1item2"]="item2";//若没找到key为chileMap1item2的元素就则添加一个
  
map<string,string> childMap2;
childMap2insert(map<sting, string>::value_type("childMap2item1","item1"));
 
myMapinsert("childMap1",childMap1);
myMapinsert("childMap2",childMap2);
  
//若想从myMap中找到childMap1的key为"chileMap1item2"的元素,可以这么做
map<string,map<string,string>>::iterator it = myMapfind("childMap1");
map<string,string>::iterator childIterator = it->secondfind("chileMap1item2");
string value=childIterator->second;//value即为所求值

总思路是吧经纬度分别取出到另一个表,然后再插入到相应字段。

需要用到截取字符串的函数,已逗号为判定点截取前后部分。每个数据库截取的函数略有差异,这里以mysql为例:

insert into map_tmp
select 
    SUBSTRING_INDEX(mapid,',',1),
    SUBSTRING(mapid,INSTR(mapid,',')+1)
from map;
----------------------
update map a 
inner join map_tmp b 
    on concat(bjingdu,',',bweidud)=amapid
set ajingdu=bjingdu,aweidu=bweidu;

map集合没有专门更改value的方法,更改value的方法就是mapput(key,value),更改就是直接替换,比如想改变key是"1",value是"一"的组合,就是mapput("1","壹"),直接替换就行。

import javautilHashMap;

import javautilMap;

public class Demo {

public static void main(String[] args) {

Map<Integer,Integer> m = new HashMap<Integer,Integer>();

mput(1, 1);

print(m);

mput(1, 2);

print(m);

}

private static void print(Map<Integer, Integer> m) {

for(MapEntry<Integer, Integer> mm : mentrySet())

Systemoutprintln("K: "+mmgetKey()+",V: "+mmgetValue());

}

}

扩展资料

集合类有一个共同特点,就是它们只容纳对象(实际上是对象名,即指向地址的指针)。这一点和数组不同,数组可以容纳对象和简单数据。如果在集合类中既想使用简单数据类型,又想利用集合类的灵活性,就可以把简单数据类型数据变成该数据类型类的对象,然后放入集合中处理,但这样执行效率会降低。

集合类容纳的对象都是Object类的实例,一旦把一个对象置入集合类中,它的类信息将丢失,也就是说,集合类中容纳的都是指向Object类对象的指针。

这样的设计是为了使集合类具有通用性,因为Object类是所有类的祖先,所以可以在这些集合中存放任何类而不受限制。当然这也带来了不便,这令使用集合成员之前必须对它重新造型。

集合类是Java数据结构的实现。在编写程序时,经常需要和各种数据打交道,为了处理这些数据而选用数据结构对于程序的运行效率是非常重要的。

和HashMap方法一样,也是用put添加元素,LinkedHashMap也是javautilMap的实现类

区别在于

Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13348823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存