java集合----------Map
来源:互联网 发布:辐射4无mod捏脸数据 编辑:程序博客网 时间:2024/05/17 06:01
Map(键值对)
Map都具有的方法put()向集合中放数据,size()集合数据的个数。
HashMap
其底层采用的数据结构也是哈希表,特点是键和值都无序,但是键必须唯一。
每个HashMap都是由若干对键值对组成的,一个键对应一个值,可以把HashMap看成一个西瓜:
HashMap hm = new HashMap();
hm.put("Robin","VeryGooD");
hm.put("Tom","GooD");
hm.put("Jerry","Bad");put()中存放的数据必须是Object,但两个参数的类型不必相同
System.out.println(hm.size());打印键值对的个数,不是对象的个数
把Map纵向切成两半,只要左边所有键所组成的一个新的Set集合(因为是无序唯一的)
Set ks = hm.keySet();
//通过keySet()方法获得HashMap中的所有键,组成一个新的Set集合,只包含键
for(Object obj:ks){
System.out.println(obj+"="+hm.get(obj));
//此处可以通过获取键得到对应的值,但是却无法通过获取值来得到对应的键,因为键和值是一一对应的,而键是无序唯一的,所以同一个值可能对应两个不同的键,所以无法通过获取值来获得键
}
把Map切成两半 只要右边所有的值所组成的一个新的Collection集合(此集合不符合任何一个特殊集合的特点所以只能归为Collection)
Collection vs = hm.values();
//通过values()方法获得每个键所对应的值,成为一个新集合,无序也不唯一
for(Object obj:vs)
System.out.println(obj);
把Map横向切片,得到一个由键和值组成的新类型的Set集合(由很多键值对所组成,无序、唯一)
Set entries = hm.entrySet();
for(Object obj:entries){
Map.Entry me = (Map.Entry)obj;
//获得一个有许多键值对所组成的新集合Set,而这个Set中每个键值对又是一个新的类型Map.Entry
System.out.println(me.getKey()+"="+me.getValue());
键值对中的键是不能替换的,而向HashMap存放键值相同的而数据不同的键值对时,会保留第一个进入的键,但是后来的键所对应的值会把之前的相同的键的对应的值覆盖掉,例如:
HashMap hm = new HashMap();
hm.put(new Teacher("Robin"),"GooD");
hm.put(new Teacher("Jerry"),"VeryGooD");
System.out.println(hm.size());
System.out.println(hm);
}
}
class Teacher{
String name;
public Teacher(String name){
this.name = name;
}
@Override
public int hashCode(){
return 1;
}
@Override
public boolean equals(Object obj){
return true;
}
@Override
public String toString(){
return name;
}
}
由于覆盖了toString()方法,打印结果是:Robin=VeryGood
TreeMap
用法与HashMap相似,但TreeMap是有序且唯一的。有序的特性与TreeSet相同,且同样是由Comparable和Comparator保证的,其比较机制和TreeSet相同。
- JAVA集合-Map集合
- java集合------Map集合
- Java集合----Map集合
- java集合------Map集合总结
- Java集合之-Map集合
- Java集合—Map集合
- java集合----------Map
- java笔记 Map集合
- java------集合Map
- java遍历Map集合
- java Map集合练习
- java集合(Map)
- java 遍历map集合
- java之Map集合
- Java 集合(Map)
- java 循环map 集合
- Java-Map集合
- java集合类Map
- java集合----------List
- const对象与const成员函数
- 编程通用好书
- 人不能两次踏进同一条河流
- android之listivew实现下拉刷新
- java集合----------Map
- apache 虚拟目录
- Qt 插件
- 插入排序--直接插入排序和希尔排序
- javascript对象
- 到底怎么样才叫看书?——下篇
- MYSQL 表分区技术
- mysql 修改root密码或忘记root密码
- Linux内核驱动之input子系统介绍