1.map特点
//注map集合没有继承Collection接口
map根据他的ascii值来自然排序
1.map中的泛型是键值对关系
map<键位,值位>
2.map添加值
(1)map.put(键,值)
public static void main(String[] args) {
//定义map集合
Map<Integer,String> map=new HashMap<Integer, String>();
//添加值
map.put(1,"花花");
map.put(2, "好好");
map.put(3, "白白");
}
(2)map取值
map.get(键值);//注输入键位获取值位
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"花花");
map.put(2, "好好");
map.put(3, "白白");
//获取值位
String string =map.get(1);
}
3.map只能用迭代器取值
4.map中键位 不可以重复,但值位可以重复(如果重复则为覆盖)
map中的迭代器
1.迭代所有的键位
在这里插入代码片public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"花花");
map.put(2, "好好");
map.put(3, "白白");
//获取所有键值存入一个set集合中
Set<Integer> keySet = map.keySet();
for (Integer i : keySet) {
System.out.println(i);
}
}
输入如下
2.获取所有的值位
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"花花");
map.put(2, "好好");
map.put(3, "白白");
//获取所有值位
Collection<String> values = map.values();
for (String s : values) {
System.out.println(s);
}
}
输出如下
3.迭代器取值
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"花花");
map.put(2, "好好");
map.put(3, "白白");
//迭代器取值
Set<Entry<Integer, String>> entrySet = map.entrySet();
for (Entry<Integer, String> entry : entrySet) {
System.out.println(entry.getKey()+","+entry.getValue());
}
}
输出如下
map的实现接口
1.Hashmap与 Hashtable
Hashmap与 Hashtable的区别
1.二者是不同的jdk Hashtable是jdk1.1出来的,Hashmap是jdk1.2出来的
2.Hashmap值可以放空值,Hsahtable不能放空值
3.Hashtable中线程有锁旗标运行慢安全
Hashmap中运行快
2.TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;
TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;
TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;
TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序
//注.关于红黑树结构请看
以下文章
https://blog.csdn.net/a29562268/article/details/80809344
3.LinkedHashMap跟HashMap一样,它也是提供了key-value的存储方式,并提供了put和get方法来进行数据存取。
LinkedHashMap是有序的,且默认为插入顺序。