java之Map接口及其实现类

时间:2020-12-19 23:26:42

Map(和Set很像)接口(和Collection都是集合框架的老祖先)

其中Collection 是单列集合(在每一行上只能放一个值),Map是双列集合(在每一行上放两个值)

key-value  键值对

在Map接口中:键不可以重复,值可以重复

Map

  

     HashMap:底层是哈希表,键值都可以是null

     TreeMap:底层是二叉树,支持键排序;

     HashTable:底层存储结构是哈希表,键和值都不可以是null,已过时;

    

    keyset ,valueset,entryset(Map,Entry)

   读取方式:

1.获得所有键的集合keyset;

2.获得所有值得集合valueset;

3.获得所有条目的entryset

entry = 一行,一个条目(包含键和值)

TreeMap:有序的(键是有序的

map中的put的作用是往map中保存或修改数据,指定的key不存在,就是给map添加数据,如果存在,就是修改指定key的数据

package javastudy;


import java.text.CollationKey;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;


import org.omg.CORBA.CODESET_INCOMPATIBLE;


public class Testit {
// map中的put的作用是往map中保存或修改数据,指定的key不存在,就是给map添加数据,如果存在,就是修改指定key的数据,可以理解为存储
public static void main(String[] args) {
HashMap<String, String> cites = new HashMap<String, String>();


cites.put("010", "北京");
cites.put("021", "上海");
cites.put("022", "天津");
cites.put("023", "重庆");


// 获取key对应的值
// Set<String> zips=cites.keySet();//获取键(key)
// Iterator<String> it =zips.iterator();
// while(it.hasNext())
// { //zip 是区号
// String zip = it.next();//用zip来接受区号
// String cityName = cites.get(zip);//把区号zip传进去,相当于用get来获取zip区号(key)所对应的value
// System.out.println(zip+":"+cityName);//注意这里的zip不能用it.next()直接输出,不然的话输出两个值中间会跳过一个值
// }
//


// 直接获取值
// Collection<String>cityNames = cites.values();//值是可以重复的,key(值)不可以重复
// Iterator<String> it = cityNames.iterator();
// while(it.hasNext())
// {
// System.out.println(it.next());
// }



        //3.通过entrySet()来获取所有条目获得所有条目的
Set<Entry<String, String>> entries = cites.entrySet();
Iterator<Entry<String, String>> it = entries.iterator();
while (it.hasNext()) {
Entry<String, String> entry = it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());//不能通过it.next(),getkey(),然后再通过it.next()来获得getValue,因为it。next在变化,收益就让it.next西安赋值个一个变量entry
}


}


}

输出结果为:

022:天津
023:重庆
010:北京
021:上海