黑马程序员技术博客---------集合Map

Map:一次添加一对元素,Collection一次添加一个元素

Map也称双列集合,Collection集合称为单列集合。

Map集合中存储的就是键值对,Map集合必须保证键的唯一性。

常用的方法:

1. 添加 value put(Key,value);返回的是上一个和key键关联的值。如果没有则返回null

2. 删除:

void clear();清空Map集合

value remove(Key);根据指定的key删除这个键值对,返回的是被删除以前的该键值。

3. 判断:

boolean containsKey(Object key):判断是否包含该键

boolean containsValue(Object value);判断是否包含这个值

boolean isEmpty();判断是否包含键值对的关系。

  1. 获取:

Value get(key);通过指定的键来获取该键对应的值,如果没有该键,则返回null,也可以通过返回值是null来判断是否包含指定的键

 int size();获取键值对的个数。

5. 取出Map集合中所有的键值对的方法,例子

 

 1   /*
 2 
 3    * 取出map中所有的键值对,
 4 
 5    */
 6 
 7   public static void show(Map<Integer,String> map)
 8 
 9   {
10 
11       map.put(8, "张三");
12 
13       map.put(7, "李四");
14 
15       map.put(2, "王五");
16 
17       map.put(1, "赵六");
18 
19       Set <Integer> set=map.keySet();//先通过KeySet方法获取到所有的键的Set集合
20 
21       Iterator<Integer>it=set.iterator();//再用迭代器得到所有的键
22 
23       while(it.hasNext())
24 
25       {
26 
27          Integer key=it.next();
28 
29          String value=map.get(key);
30 
31          System.out.println(key+"  :   "+value);//最后通过键得到所有的值
32 
33       }
34 
35   }

 

第二种方法:

   

 1   //根据.entrySet();方法获取Map的键值对的内部接口映射对象的Set集合
 2 
 3       Set < Map.Entry<Integer,String>> set=map.entrySet();
 4 
 5       Iterator< Map.Entry<Integer,String>>it=set.iterator();//迭代器迭代
 6 
 7       while(it.hasNext())
 8 
 9       {
10 
11          Map.Entry<Integer, String> mm=it.next();
12 
13          Integer in=mm.getKey();//获得键
14 
15          String name=mm.getValue();//获得值
16 
17          System.out.println(in+"   :   "+name );
18 
19   }

 

Map的常用子类:

Hashtable:内部结构是哈希表,是同步的,不允许null作为键,不允许null作为值

     Properties:用来存储键值对模型的配置文件信息,可以和IO技术相结合。

HashMap:内部结构是哈希表,是不同步的,允许null作为键,允许null作为值

    LinkedHashMap:具有可预知的迭代顺序

TreeMap:内部结构是二叉树,是不同步的,可以对Map集合中的键进行排序。,用法等同于父类

集合框架工具类

Collections是集合框架的工具类,它里面的方法都是静态的。

     Collections.sort(List);可以对List集合进行自然顺序排序

Collections.sort(List<T> list,Comparator<? super T> c)根据指定的比较器产生的顺序对指定列表进行排序

  Collections.reverseOrder();返回一个反转的比较器.

用法:

 1  public static void main(String[] args) {
 2 
 3        //传入比较器
 4 
 5 TreeSet <String> ts=new TreeSet<String>(Collections.reverseOrder());
 6 
 7     ts.add("erfd");
 8 
 9     ts.add("abc");
10 
11     ts.add("mnbv");
12 
13     ts.add("igdf");
14 
15     ts.add("thmj");
16 
17     System.out.println(ts);//TreeSet将逆序输出
18 
19 }

 

替换元素:

Collections.replaceAll(List<T> list,T oldVal, T newVal)
随机打乱元素:
Collections.shuffle(List<?> list, Random rnd)

. . . . . . . . . .

Arrays:也是集合框架的工具类,里面的方法都是静态的。

   List asList(数组);将数组转成集合。可以使用集合的方法操作数组中的元素。

  注意:数组的长度是固定的,不可以使用增删方法,否则会发UnsupportedOperationException异常。

  如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行集合存储。如果数组中的元素是基本类型数值,那么会将数组作为集合中的元素进行存储。

 

将集合转成数组使用Collection接口中的toArray方法,集合转成数组可以对集合中的元素的操作方法进行限定,不允许对其进行增删

toArray需要传入一个指定类型的数组,如果数组的长度小于集合的size()那么该方法会创建一个同类型,并和集合长度相同的数组,如果长度大于集合的size(),那么该方法会使用指定的数组,存储集合中的元素,其他位置默认为null,所以数组的长度最好就是集合的size();

posted @ 2014-03-06 23:28  我是一个小程序员  阅读(130)  评论(0编辑  收藏  举报