A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ice24 中级黑马   /  2015-6-24 12:36  /  491 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

公共的获取元素的接口(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,如果数组中存储的是引用类型的元素,在把数组转为集合后,该集合中存储的就是数组中的所有引用类型的元素

6 个回复

倒序浏览
lidiwo 发表于 2015-6-24 13:06
我还没有学到这里,赞一下

加油吧,学到了这儿很快的。
回复 使用道具 举报
不错,赞一个
回复 使用道具 举报
总结的不错
回复 使用道具 举报
总结的很好,顶一个
回复 使用道具 举报
刚学完集合。 整理的不错,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马