android培训、 java培训、
MAP
Map的特点:a.map集合一次必须存储一对元素。一个称之为键另一称之为值,俗称键值对;b.必须保证map集合中键的唯一性,而
值不一定保证其唯一
,但尽量保证其唯一(Collection一次存一个是单列集合,map是双列集合);c.因为hash所以无序。
Map的方法:
|--添加 v put(k key,v value):添加一对元素,如果该对元素的键已经存在,那么新添加的重复的键的值会覆盖原来键对应的值。put方法并返回被覆盖的值,如果没有覆盖说明这个键不重复,则返回null;
void putAll(Map):添加一批键值对,也就是将一个Map集合中的元素添加到另一个Map集合中;
|--判断 boolean containsKey(key) 判断map集合中是否包含这个键;
boolean containsValue(Value)判断map集合中是否包含这个值;
boolean isEmpty:判断集合是否为空;
|--删除 value remove(key):根据键删除指定的键值对,并返回对应的value;
|--获取 value get(key):根据map集合中的键获取该键对应的值;注意:这个方法如果指定的键不存在就返回null,可以通过null来判断map集合是否包含指定的键。
collection
values
():获取到Map中所有的值。
set
keyset()
;该方法可以获取map集合中所有的键,并将这些键存储到set集合中并返回该set集合。那么,可有通过Set集合的
Iterator和get方法的组合可以将map中的value全部取出。
set
entry
Set();
将所有键值映射关系对象(键值关系的数据类型是Map.Entry.)存储到Set集合中并返回。然后用Set的Iterator去获取依次获取每个Map.Entry,然后用Map.Entry的getkey、getValue方法获取具体的key或者value。
Map.Entry
:他是个什么东东?
其实Entry就是Map接口中的内部接口。
结构类似如下:
inter
face MyMap
{
P
ubic static interface MyEntry//只有内部类能够用static修饰
{
public
void show();
}
}
C
lass Demo implements MyMap.MyEntry//实现了MyMap接口的内部接口
{
P
ublic void show(){s.o.p(
“
搞定!
”
)}
}
内部类:
class outer
{
static class Inner
{
static void show(){}
}
}
调用show时: Outer.Inner.show();
M
ap用于存储键值对的,键值关系也被封装成对象。该对象的类型就是Entry。键值关系必须先要有键值对。而且键值关系在直接访问键和值。所以就将Entry接口定义在Map接口中。
Map子类:
|--Hashtable:底层是哈希表,线程同步,不可以null键,null值,被hashmap淘汰;
|--HashMap :底层是哈希表,线程不同步。可以null键,null值。
|--LinkedHashMap:可以让HashMap有序。
|--TreeMap:底层是二叉树,用于给Map中的键进行排序。
注意;HashSet、TreeSet集合底层用的就是HashMap、TreeMap;
向所有集合中存储元素时保证元素唯一性一定要关注其底层数据结构,重写equals和hashcode方法或者中一个或者两个,再或者让子元素自身具有可比较性或者给一个比较器。
Utilities(工具类)
工具类:方法都是static。
|--Collections(和前面Collection相区别):
sort
(
List
<T> list)
sort
(
List
<T> list,
Comparator
<? super T> c)
(sort底层用的是swap方法。)
max
(
Collection
<? extends T> coll)
max
(
Collection
<? extends T> coll,
Comparator
<? super T> comp)
min
(
Collection
<? extends T> coll)
min
(
Collection
<? extends T> coll,
Comparator
<? super T> comp)
shuffle
(
List
<?>
list)
shuffle
(
List
<?>
list,
Random
rnd)
reverseOrder
()
reverseOrder
(
Comparator
<T>
cmp)
synchronized……
同步
|--Arrays
aslist
方法:将数组变成集合。数组对象没有可以使用的方法,为操作数组元素方便可以将其转成集合,这样可以使用集合的思想和方法来操作数组。注意:数组变成集合时因为最终底层还是一个数组,故长度是固定的,不可以使用集合的增删方法操作这个数组中的元素。否则会发生UnsupportedOperationException。如果数组中存储的是引用数据类型的元素,转成集合时,直接将数组中的元素变成集合中的元素。可是如果数组中存储的是基本数据类型时,会将这个数组实体作为集合中的元素存在。
有很多元素不需要保证唯一(list),但是需要按指定的方式排序(Treeset),这时就没有具体容器可以实现了,这时就要想到集合框架工具类。
android培训、 java培训、期待与您交流!