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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 淡看小人生 初级黑马   /  2018-4-7 12:59  /  1218 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们学习的是面向对象的编程语言,面向对象的编程语言对事物的描述都是通过对象体现的,
为了方便对多个对象进行操作,我们就必须把这多个对象进行存储,而要想存储多个对象,就不能是
基本的变量了,应该是一个容器类型的变量。回顾我们学过的知识,有哪些是容器类型的呢?
      数组,StringBuilder
       首先说StringBuilder,它的结果是一个字符串,不一定满足我们的需求,所以我们只能
选择数组了,而数组的长度固定,不能适应变化的需求,在这种情况下,Java就提供了集合类供我们使用。
由此可见,集合类的长度是可变的。

集合类的特点:长度可变。
1.Collection是一个接口,它是List和Set的父接口
。因为是接口所以不能直接创建Collection对象,只能创建它的子类对象的方式来调用它的方法。
2.Collection的成员方法:
                          boolean add(E e)  //添加元素
                        void clear()  //清空集合
                        boolean contains(Object o)//集合是否包含某个元素  
                        boolean isEmpty()//集合是否为空
                        boolean remove(Object o) //删除元素
                        int size() //返回集合的大小
                        Object[] toArray()  //把集合转化成Object[]
                       
                        Iterator<E> iterator()   //返回迭代器

3.Collection集合的遍历方式
                  ①.toArray(),可以把集合转换成数组,然后遍历数组即可
                  ②.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
注意:这里说的是集合的遍历方式,很多同学会下意思的觉得不是还可以使用for循环和索引来遍历。但是那个其实是遍历ArrayList的遍历方式。我们说ArrayList属于Collection集合的一种。其他有些Collection集合并不能使用这种方式遍历。所以这里Collection集合的遍历方式指的是所有Collection集合通用的方式
List集合:
List集合的特点:
        A:有序(存储和取出元素的顺序一致)
        B:存储的元素可以重复
List集合的特有成员方法
        void add(int index,E element):在指定位置添加元素
        E remove(int index):删除指定位置的元素
        E get(int index):获取指定位置的元素
        E set(int index,E element):修改指定位置的元素
List集合的遍历:
        A:迭代器       
        B:普通for循环
List集合子类特点及ArrayList集合存储字符串并遍历
        List:
                ArrayList:底层数据结构是数组,查询快,增删慢
                LinkedList:底层数据结构是链表,查询慢,增删快

ArrayList存储字符串并遍历:
                A:迭代器
                B:普通for
                C:增强for

Set:
Set集合的特点
        Set:元素唯一,存储元素无序
        一个不包含重复元素的 collection
HashSet:
        它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变

HashSet保证元素唯一性的原理?
通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据的判断的。
这个判断的流程是:
                首先比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。
                        如果哈希值不同,就直接添加到集合中
                        如果哈希值相同,继续执行equals()进行比较,
                                返回的是true,说明元素重复,不添加。
                                返回的是false,说明元素不重复,就添加。
如果我们使用HashSet集合存储对象,你要想保证元素的唯一性,就必须重写hashCode()和equals()方法。

Map集合:
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
通过HashMap创建对象。
Map的成员方法:
V put(K key,V value):添加元素
V remove(Object key):根据键删除键值对元素
void clear():移除所有的键值对元素
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
int size():返回集合中的键值对的对数

Map集合中的实现类的数据结构只针对键有效。

Map集合的获取功能测试
        V get(Object key):根据键获取值
        Set<K> keySet():获取所有键的集合
        Set<Map.Entry<K,V>> entrySet()获取所有的键值对对象
        Collection<V> values():获取所有值的集合




2 个回复

倒序浏览
不错!值得推荐!呵呵...
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马