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:上海