黑马程序员 Map集合的个人总结



-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
Map 集合的特点和应用.
1,Map 集合没有实现 Collection 这个接口.
	Map 集合最常用的两大子类就是,HashMap 和 TreeMap 
	HashMap 和 TreeMap 该类继承了 java.util.AbstractMap 该类,复写了其中
	的 HashCode 和 equals 两个方法,所以他们在存储元素的时候
	
	HashMap 集合存储元素的时候,是无序的,不可以重复的
	TreeMap 集合存储元素的时候是有序的,不可以重复的.
	
2,Map 集合底层的实现原理,就是  哈希表和 二叉树,此容器中存储的键——值对通过键来标识,所以键不能重复。
	如果出现了,重复的键,那么后面赋的值就会把前面的给覆盖掉了.

3,Map 集合  是以键值对的形式存在的   好比 zhangsan=20;集合里面装的都是这样的键值对,
	想的得到里面的键,集合.KeySet();这个取出来的元素要放到 Set 集合中来.在利用Set 集合中的特点
	将里面的值迭代出来,这样的话就可以得到里面的键,在利用键来得到里面的值,下面代码是这两种取值的方式;
Map<String , Integer> map = new HashMap<String , Integer>();
		map.put("zhangsan", 1);
		map.put("zhangsan1", 2);
		map.put("zhangsan111111", 2);
	Set<String> set= map.keySet();
	for(String s: set){
		String key= s;
		Integer value= map.get(s);
		System.out.println(key + ".." +value);
	}
还有一种取值的方式,就是把这里面的关系给取出来,就是把这两个值绑定在一起的关系.
Set<Map.Entry<String, Integer>> set1 = map.entrySet();
	for(Map.Entry<String , Integer> se : set1){
		Map.Entry<String, Integer> f = se;
		String s= f.getKey();
		Integer in= f.getValue();
		System.out.println(s+""+in);
	}




import java.lang.reflect.Method;
import java.util.Comparator;

public class Person implements Comparable<Person> {//让这个类 具有比较性
	private String name;
	private int age;
	Person(String name,int age){
		this.name= name;
		this.age= age;
	}
	@Override
	public int compareTo(Person s) {//这是覆盖比较器的方法
		int num = new Integer(this.age).compareTo(new Integer(s.age));
		if(num == 0)
			return s.name.compareTo(this.name);
		return num;
	}
	public int hashCode(){ //对于存放到 HashSet 集合中的时候.覆盖了 HashCode方法
		return  60;
	}
	public boolean equals(Object obj){//对于存放到 HashSet 集合中的时候.覆盖了equals方法
		if(!(obj instanceof Person))
			throw new RuntimeException("不是人对象");
			Person p = (Person)obj;
			return this.name.equals(p.name)&& this.age==p.age ;
	}
	public String toString(){
		return name+"..."+age;
	}
	public String getName(){
		return name;
	}
	public int getAge(){
		return age;
	}
	
}
class BJQ implements Comparator{//这是比较器

	@Override
	public int compare(Object o1, Object o2) {//这是覆盖比较器的方法.
		// TODO Auto-generated method stub
		if(!(o1 instanceof Person && o2 instanceof Person))
			throw new RuntimeException("bushi ren lei de dui xiang ");
		Person p1= (Person)o1;
		Person p2 =  (Person)o2;
		int unm = p1.getName().compareTo(p2.getName());
		if(unm==0)
			return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
		return unm;
	}
	
}



import java.lang.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.*;

public class VectorTest implements Comparable {
	
			public static void main(String[] args) throws Exception{
				Map<String ,Person> map= new TreeMap<String , Person>();
				
				map.put("zhangsan",new Person("wangermazi",20));
				map.put("lisi",new Person("tianhao1",25));
				map.put("yuanl",new Person("tianhao2",33));
				map.put("auanl",new Person("tianhaosan",33));
				Set<String> set = map.keySet();
				for(String s: set){
					
					System.out.println(s+"..."+map.get(s));
				}
				
	}
}
	


-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值