Map 常用的方法事例
package com.hu.Map;
import static org.junit.Assert.*;
import java.awt.RenderingHints.Key;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.junit.Test;
import com.hu.cool.Person;
public class TestMap {
@Test
public void test() {
/*Collection接口
* Map接口
* |------------HashMap Map的主要实现类
* |------------LinkedHashMap
* |------------TreeMap
* |------------Hashtable
* ----properties
*
*/
Map map=new HashMap();
//Object put(Object Key ,object value)向map中添加一个元素
map.put("aa", 123);
map.put(123, "aa");
map.put("bb", 456);
map.put(null, null);
System.out.println(map.size());
//hashMap Tree是由set存放的不能够重复,所以如果重复的key是存放不进去的
//value是由Collection来存放的,可以重复;而一个key value对是一个Entry所有entru 是有set存放不可重复
//如果有两个相同的值,则相当于更新用新的代替旧的。
map.remove(null);//按照某个key的值进行删除
System.out.println(map);
Object val=map.get("aa");
System.out.println(val);
}
@Test
public void test2(){
/*
* 如何遍历Map
* Set keyset()
* Collection Values()
* Set entryset()
*
*/
Map map=new HashMap();
map.put("aa", 123);
map.put(123, "aa");
map.put("bb", 456);
map.put(null, null);
map.put(new Person("AA", 18), "Myu");
//1,遍历key
Set set=map.keySet();
for(Object obj:set){
System.out.println(obj);
}
//2,遍历value
Collection collection=map.values();
for (Object object : collection) {
System.out.println(object);
}
//3,遍历entry
//方法一:如何遍历key-value对
Set set2=map.keySet();
for(Object object:set2){
System.out.println(object+"---------->"+map.get(object));
}
//实现遍历的方法二
Set set3=map.entrySet();
for(Object object:set3){
Map.Entry entry=(Entry)object;
System.out.println(entry);
}
}
}
***********************************************************
LInkedhashset()的使用
@Test
public void test3(){
//linkedhashset 遍历的时候按照插入的顺序来遍历,但是插入删除的时候速度普遍比较慢因为还要维护链表
Map map=new LinkedHashMap();
map.put("123", "AA");
map.put(45, "BB");
map.put("cu", 45);
Set set=map.entrySet();
for(Object object:set){
Map.Entry entry=(Entry) object;
System.out.println(object);
}
}
*************************************************
@Test
public void testding(){
Comparator comparator=new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Person2 && o2 instanceof Person2){
Person2 p1=(Person2) o1;
Person2 p2=(Person2) o2;
Integer i=p1.getAge().compareTo(p2.getAge());
return i;
}
return 0;
}
};
Map map=new TreeMap(comparator);
map.put(new Person2("muYongyuan", 14), 99);
map.put(new Person2("anyue", 13), 110);
map.put(new Person2("guangxin", 15), 93);
map.put(new Person2("peng", 12), 114);
Set set=map.entrySet();
for(Object object:set){
Map.Entry entry=(Map.Entry)object;
System.out.println(entry);
}
}
*************************************************
compareTo()放大调用的时候必须是对象类型的。