JAVA集合之Map映射深刻总结案例附上解释跟总结
- 格式:docx
- 大小:32.46 KB
- 文档页数:20
Java集合系列之Map映射学习总结一.HashMap实例
案例1:HashMapDemo1
package Map映射;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 顺序结构
* 基于哈希表的Map 接口的实现。
* 键和值都允许是null,值可以重复。
* 无序的
* 线程不安全的。(不同步)
* 遍历无序输出.
* 和Set集一样,没有for循环遍历的方法。
* 遍历Map方法有两种:
* ①调用keySet方法:
* Set keys = map.keySet();
* Iterator it = keys.iterator();
* ②调用entrySet方法:
* Set keys = map.entrySet();
* Iterator it = keys.iterator();
* 本例子遍历的是基本类型
*
*/
public class HashMapDemo1 {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put(1, 111);
map.put("1", "上海");
map.put(5, "广州");
map.put(3, "西安");
map.put(null,"武汉"); //键允许是null
map.put(2, null);//值允许是null
map.put(null,null);//键和值都允许是null,会替换前面的null:武汉.
System.out.println("**********迭代器遍历调用keySet方法*********");
Set keys = map.keySet();//获取所有的键,放入一个集合中
Iterator it = keys.iterator();//取得迭代器才可以遍历
//遍历出来的结果是无序的。
while(it.hasNext())
{
Object obj = it.next();//切记这个至少遍历键,不是值。
System.out.println(obj+"------>"+map.get(obj));//取得键对应的值
}
System.out.println("**********迭代器遍历调用entrySet方法*********");
Set set1=map.entrySet();
Iterator iterator1=set1.iterator();
while (iterator1.hasNext()) {
Map.Entry object = (Map.Entry) iterator1.next();
System.out.println(object.getKey()+"------>"+object.getValue());
}
}
}
案例2:HashMapDemo2
package Map映射;
import java.util.*;
public class HashMapDemo2 {
@SuppressWarnings("rawtypes")
public static void main(String[] args){
HashMap
HashMap
Person2 p1=new Person2("李川",111,80);
Person2 p2=new Person2("李您",111,80);
Person2 p3=new Person2("林是",111,80);
map1.put(1, p1);
map1.put(2, p2);
map1.put(3, p3);
map.put(1, 110);
map.put(2, 220);
map.put("城市","福建");
map.put(null, null);
System.out.println("***********用keySet方法遍历*********");
Set keys=map.keySet();//取得键值,取得map所有的键值,存入set集合中
Iterator iterator=keys.iterator();//利用键值取得value值
while(iterator.hasNext()){
Object object=iterator.next();
System.out.println(object+"------->"+map.get(object));//输出是无序的
}
System.out.println("***********用entrySet方法遍历*********");
Set
Iterator
while(iterator1.hasNext()){
Map.Entry
// entry.getValue();表示取得该键对应的值,这个值要是基本类型的话,那就直接输出,要是引用类型的话,还需要调用方法取得相应的值
System.out.println((entry.getKey()+"------->"+"姓名:
"+(entry.getValue()).getname()+"学号:"+(entry.getValue()).getno()+"分数:"+(entry.getValue()).getscore()));//输出是无序的
}
}
}
class Person2{
String name;
int no;
int score;
public Person2(String name,int no,int score){
=name;
this.no=no;
this.score=score;
}
public void setname(String name){
=name;
}
public void setno(int no){
this.no=no;
}
public void setscore(int score){
this.score=score;
}
public String getname(){
return name;
}
public int getno(){
return no;
}
public int getscore(){