黑马程序员-java基础 Map

---------------------- android培训java培训 、期待与您交流! ----------------------

 

Map 集合:该集合存储键值对,一对一对往里存储,且必须保证健的唯一性

Map
 HashTable 底层是哈希表数据结构,不能存储空,线程同步
 HashMap   底层是哈希表数据结构,允许空健空值,线程不同步。 
 TreeMap   底层是二叉树数据结构,线程不同步,可以给map集合中的健进行排序

set集合底层就是使用map集合


1 添加
put();如果出现相同的健,后添加的值,后出现的值会覆盖原有的值,且会返回被覆盖的值
2 删除
clear();
remove();
3 判断
containsKey();
containsValue();
4 获取
get();
size()
values();


Set<> keySet(); 将Map中所有的健存入到Set集合,因为set具备迭代器,所以可以迭代方式取出所有的健
,然后根据get方法,获取对应的值

Set<> entrySet(); 将Map集合中的映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry

Map.Entry :其实Entry也是一个接口,他是Map接口中的一个内部接口

interface Map{
 public static interface Entry{
  public abstart Object getKey();
  piblic abstart Object getValue();
 }
}

 

遍历实例

public class Zi {
 private String name;
 private int age;

 public Zi(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

}


import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Test {

 public static void main(String[] args) {
  HashMap<Zi, String> hm = new HashMap<Zi, String>();
  hm.put(new Zi("aa",1), "a");
  hm.put(new Zi("bb",2), "b");
  hm.put(new Zi("cc",3), "c");
  hm.put(new Zi("aa",1), "d");
  
  Set<Zi> zi = hm.keySet();
  
  Iterator<Zi>it =zi.iterator();
  while(it.hasNext()){
   Zi str = it.next();
   System.out.println(str.getAge()+"---"+str.getName()+"---"+hm.get(str));
   //这里打印
   //1---aa---a
   //3---cc---c
   //1---aa---d
   //2---bb---b
   //这里key的值相同没有覆盖,因为没有重写equals方法,他是根据object的equals方法进行地址的判断。不同对象地址不一样他认为key不一样。
  }
  
  HashMap<Integer, String> hm1 = new HashMap<Integer, String>();
  hm1.put(1, "a");
  hm1.put(2, "b");
  hm1.put(3, "c");
  hm1.put(1, "d");
  
  Set<Integer> in = hm1.keySet();
  Iterator<Integer> ite = in.iterator();
  while(ite.hasNext()){
   Integer inte =ite.next();
   System.out.println(inte+"---"+hm1.get(inte));
   //这里打印
   //1---d
   //2---b
   //3---c
   //这里重复key对应的value被覆盖了,因为inteage 类重写了equals方法 ,是按照值进行判断。值相同,key相同。所以覆盖了value

  }
  
 }

}

 


 

 

---------------------- android培训java培训 、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值