黑马程序员——java基础——集合类

------- android培训java培训、期待与您交流! ----------


面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。

集合的继承体系结构: 由于需求不同,Java就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图。

Collection

       |--List

                |--ArrayList

                |--Vector

                |--LinkedList

       |--Set

                |--HashSet

                |--TreeSet

集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

一、Collection:是集合的顶层接口

Collection的功能概述:

1:添加功能

                   booleanadd(Object obj):添加一个元素

                   booleanaddAll(Collection c):添加一个集合的元素

2:删除功能

                   voidclear():移除所有元素

                   booleanremove(Object o):移除一个元素

                   booleanremoveAll(Collection c):移除一个集合的元素(是一个还是所有)

3:判断功能

                   booleancontains(Object o):判断集合中是否包含指定的元素

                   booleancontainsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)

                   booleanisEmpty():判断集合是否为空

4:获取功能

                   Iterator<E>iterator()(重点)

5:长度功能

                   intsize():元素的个数

                   面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?

6:交集功能

                   booleanretainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?

7:把集合转换为数组

                   Object[]toArray()

 


二、List接口:

List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现List接口的对象成为List集合。在List集合中允许出现重复元素,所有的元素是一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素,另外List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。

List集合的特有功能:

A:添加功能

                   void add(int index,Objectelement):在指定位置添加元素

B:获取功能

                   Object get(int index):获取指定位置的元素

C:列表迭代器

                   ListIterator listIterator():List集合特有的迭代器

D:删除功能

                   Object remove(int index):根据索引删除元素,返回被删除的元素

E:修改功能

                   Object set(int index,Objectelement):根据索引修改元素,返回被修饰的元素


List的子类特点

           ArrayList: 底层数据结构是数组,查询快,增删慢   线程不安全,效率高

           Vector: 底层数据结构是数组,查询快,增删慢   线程安全,效率低


           LinkedList: 底层数据结构是链表,查询慢,增删快 线程不安全,效率高



三、Set接口:

Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口在功能上进行扩充,只是比Collection接口更加严谨。与List接口不同的是,Set接口中的元素无序,并且都会以某种规则保证存入的元素不重复出现。Set集合主要有两个实现类,分别是TreeSet和HashSet。


HashSet集合

 A:底层数据结构是哈希表(是一个元素为链表的数组)

B:哈希表底层依赖两个方法:hashCode()和equals()

执行顺序:

         首先比较哈希值是否相同

         相同:继续执行equals()方法

                     返回true:元素重复了,不添加

                       返回false:直接把元素添加到集合

          不同:就直接把元素添加到集合

 C:由hashCode()和equals()保证元素唯一性

D:开发的时候,代码非常的简单,自动生成即可。

E:HashSet存储字符串并遍历

F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)




TreeSet集合

A:底层数据结构是红黑树(是一个自平衡的二叉树)

B:保证元素的排序方式

a:自然排序(元素具备比较性)

             让元素所属的类实现Comparable接口

 b:比较器排序(集合具备比较性)

              让集合构造方法接收Comparator的实现类对象


 


四、Map集合

Map集合和Collection集合的区别:

Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。

注意:

 Map集合的数据结构值针对键有效,跟值无关        

 Collection集合的数据结构是针对元素有效

Map集合的功能概述:

1:添加功能

V put(K key,V value):添加元素。

如果键是第一次存储,就直接存储元素,返回null,如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

2:删除功能

           void clear():移除所有的键值对元素

           V remove(Object key):根据键删除键值对元素,并把值返回

3:判断功能

           boolean containsKey(Object key):判断集合是否包含指定的键

           boolean containsValue(Object value):判断集合是否包含指定的值

           boolean isEmpty():判断集合是否为空

4:获取功能

           Set<Map.Entry<K,V>>entrySet()

           V get(Object key):根据键获取值

           Set<K> keySet():获取集合中所有键的集合

           Collection<V> values():获取集合中所有值的集合

5:长度功能

           int size():返回集合中的键值对的对数



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值