快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

齐博国际网址:JAVA提高教程(11)认识Map



Map可以为某些数据供给快速查找功能,经由过程关键字(key)可以快速的获得对应的Value,而不用像List那样必要大年夜范围的遍历或特其余算法。

1. 源代码

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.HashSet;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Map;

importjava.util.Set;

importjava.util.Map.Entry;

/**

*老紫竹JAVA前进教程(11)-熟识Map

*将键映射到值的工具。

*一个映射不能包孕重复的键;每个键最多只能映射到一个值。

*

*相关API请查看api.java2000.net/Map

*

*@author老紫竹

*/

publicclassLession{

publicstaticvoidmain(String[]args){

//构造一个Map

//我们应用HashMap进行测试

Mapmap=newHashMap();

//查看map是否为空

System.out.println(map.isEmpty());//true

//存入数据

//put措施会返回原本的值

//假如是第一次赋值,则返回null;

System.out.println(map.put("id","123"));//null

map.put("name","xyz");

//再次查看map是否为空

System.out.println(map.isEmpty());//false

//查看有若干数据了

System.out.println("size="+map.size());//size=2

//查看所有的数据

showMap(map);//id=>123;name=>xyz;

//获取数据

System.out.println("name="+map.get("name"));//name=xyz

//放入不合key类型的数据

map.put(newInteger(1),newObject());

//放入聚拢类型

Setset=newHashSet();

set.add(111);

set.add(222);

Listlist=newArrayList();

list.add(333);

list.add(444);

map.put(set,list);

//以致放入Map类型

Mapm=newHashMap();

m.put("mm","mmmm");

map.put(m,"mapinmap");

//id=>123;1=>java.la齐博国际网址ng.齐博国际网址Object@de6ced;{mm=mmmm}=>mapinmap;name=>xyz;

//[222,111]=>[333,444];

showMap(map);

//我们考试测验放入重复key的数据

System.out.println(map.put("id","456"));//123

//可以看到,原本的数据value被覆盖了

//id=>456;1=>java.lang.Object@de6ced;{mm=mmmm}=>mapinmap;name=>xyz;

//[222,111]=>[333,444];

showMap(map);

//反省是否存在我们必要的数据

//查找key值

System.out.println(map.containsKey("name"));//true

//查找Value

System.out.println(map.containsValue(list));//true

//删除一些数据

//是根据key进行删除的

System.out.println(map.remove(m));//mapinmap

showMap(map);//id=>456;1=>java.lang.Object@de6ced;name=>xyz;[222,

//111]=>[333,444];

//Entry的聚拢

//内部便是Map实现的,以是对其操作是相互影响的

//不支持add操作,

Setms=map.entrySet();

//[id=456,1=java.lang.Object@de6ced,name=xyz,[222,111]=[333,444]]

System.out.println(ms);

System.out.println(ms.size()+"/"+map.size());//4/4

//考试测验经由过程entrySet删除

Iteratorit=ms.iterator();

if(it.hasNext()){

Entrye=it.next();

System.out.println齐博国际网址(e.getKey()+"="+e.getValue());//id=456

it.remove();

}

System.out.println(ms.size()+"/"+map.size());//3/3

//清除所稀有据

map.clear();

System.out.println(ms.size()+"/"+map.size());//0/0

}

publics齐博国际网址taticvoidshowMap(Mapmap){

//迭代Key的操作

Iteratorit=map.keySet().iterator();

Objectkey;

while(it.hasNext()){

key=it.next();

System.out.print(key+"=>"+map.get(key)+";");

}

System.out.println();

}

}

2 运行结果

true

null

false

size=2

id=>123; name=>xyz;

name=xyz

id=>123; 1=>java.lang.Object@de6齐博国际网址ced; {mm=mmmm}=>map in map; name=>xyz; [222, 111]=>[333, 444];

123

id=>456; 1=>java.lang.Object@de6ced; {mm=mmmm}=>map in map; name=>xyz; [222, 111]=>[333, 444];

true

true

map in map

id=>456; 1=>java.lang.Object@de6ced; name=>xyz; [222, 111]=>[333, 444];

[id=456, 1=java.lang.Object@de6ced, name=xyz, [222, 111]=[333, 444]]

4/4

id=456

3/3

0/0

3 测试:

考试测验放入各类工具类型,并检测和删除它们

4 总结

map的put和get是关键,不合的实现Map的要领有一点区别,我们会在后面的先容里解说常用的Map实现

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: