黑马程序员技术交流社区
标题:
Map及工具类
[打印本页]
作者:
ice24
时间:
2015-6-24 12:36
标题:
Map及工具类
公共的获取元素的接口(Iterator迭代器):
hasNext() 判断集合中是否有下一个元素存在
next() 获取集合中的下一个元素
remove() 删除迭代器对象指向集合中的元素
Comparator接口:比较器对象。属于强制排序
Comparable接口:自然排序方式。属于默认的排序方式。
(注意:元素必须实现Comparable,重写compareTo)
Map集合(接口):一次存储的是两个元素(key-value对应关系)、key必须是唯一的(不能重复)、
可以存储null(key只能有一个null)、一个key只能对应一个value(key和value属于一一对应关系)
|----HashMap集合(类):底层使用哈希表结构。存取元素无序,可以存储null,但key只能有一个null存在查询元素、添加不重复元素 的效率比较高;
|----LinkedHashMap集合(类):底层使用链表+哈希表结构。存取元素有序;
|----TreeMap集合(类):底层使用二叉树结构。存储的元素会按照某种规则进行排序;
排序方式和TreeSet相同(因为TreeSet底层封装了TreeMap);
Map集合属于双列集合,里面有两个单列集合。
Map集合的遍历
A:键找值
a:获取所有键的集合
b:遍历键的集合,得到每一个键
c:根据键到集合中去找值
B:键值对对象找键和值
a:获取所有的键值对对象的集合
b:遍历键值对对象的集合,获取每一个键值对对象
c:根据键值对对象去获取键和值
代码体现:
Map<String,String> hm = new HashMap<String,String>();
hm.put("it002","hello");
hm.put("it003","world");
hm.put("it001","java");
//方式1 键找值
Set<String> set = hm.keySet();
for(String key : set) {
String value = hm.get(key);
System.out.println(key+"---"+value);
}
//方式2 键值对对象找键和值
Set<Map.Entry<String,String>> set2 = hm.entrySet();
for(Map.Entry<String,String> me : set2) {
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"---"+value);
Map和Collection的区别
A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。
Map集合的基本方法:
添加元素:put(K key, V value)
在使用put存储一对元素(key-value)对象时,会先拿key去判断Map集合中是否已经存在。
如果Map集合中没有相同的key存在:就把key-value存储到Map集合中,并返回null值
如果Map集合中有相同的key存在:会把之前存储的value对象覆盖。并返回之前的value对象(旧value对象)
删除元素:remove(Object key)
根据指定的key元素对象去Map集合中删除元素相应的key-value一对元素。
如果Map集合中有相同的key元素存在:则删除一对key-value对象
如果Map集合中没有指定的key元素存在:没有删除操作,返回null
修改元素:使用put方法
获取元素:get(Object key) 根据键获取值
根据指定的key元素对象,去 Map集合获取相应的value对象
如果Map集合中没有指定的key元素存在,则返回null
判断:boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断map集合是否为空
其它:size() 获取Map集合中存储的key-value对应关系的个数
Set<String>keys=map.KeySet();获取集合中所有键的集合
Map中的keySet方法:获取Map集合中所有的key对象
Collection<V> values() 获取集合中所有值的集合
Set<K> keySet():获取集合中所有键的集合
int size():返回集合中的键值对的对数
注:Map集合对象不能直接进行遍历,需要获取Map中的所有的key、或所有value、或所有的key-value后,才可以对获取到的单列集合进行遍历
Map集合的entrySet方法:获取Map集合中所有的key-value映射关系
映射关系类型:Map.Entry
HashMap在存取元素时,不能保证集合中的元素存取有序。
如果希望集合中的元素存取有序时,需要使用HashMap集合类下的子类:LinkedHashMap
解决HashMap集合中存在相同Key值,需重写hashCode()和equals()方法
注:Collections中的max/min方法只能针对List或Set集合操作(包含Collection集合)
Collections中的max或min方法除了可以对数值类型操作外,还可以对字符串或自定义类型进行操作
Collecions工具类中的sort方法只能对List集合对象进行排序
sort方法除了可以对数值类型数据排序外,还可以对字符串或自定义对象类型的数据排序
Collection中反转排序(逆序):reverseOrder()
注:二分查找法必须保证集合中的元素是有序排列的。
Arrays是专门用来针对数组对象操作的工具类、可以用来在集合的数组之间进行转换
集合转数组: toArray()
数组转集合: aslist()
注:当把数组转为集合后,该集合的大小就固定了(不能修改集合的大小)
Arrays工具类除了可以把数组转为集合外,还具有排序、反转、二分查找等功能
数组转为集合时,有两种情况:
1,如果数组中存储的都是基本数据类型,在把数组转为集合时,会把整个数组作为一个对象存储到集合中
2,如果数组中存储的是引用类型的元素,在把数组转为集合后,该集合中存储的就是数组中的所有引用类型的元素
作者:
ice24
时间:
2015-6-24 21:54
lidiwo 发表于 2015-6-24 13:06
我还没有学到这里,赞一下
加油吧,学到了这儿很快的。
作者:
Diors
时间:
2015-6-24 22:05
不错,赞一个
作者:
a1224577182
时间:
2015-6-24 22:21
总结的不错
作者:
SouthKai
时间:
2015-6-24 23:12
总结的很好,顶一个
作者:
shuaiqi_P_D
时间:
2015-6-24 23:26
刚学完集合。 整理的不错,赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2