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()放大调用的时候必须是对象类型的。

posted @ 2016-12-07 14:31  afterhoursprogramer  阅读(225)  评论(0编辑  收藏  举报