集合框架之Collection接口和Map接口

简介

集合框架:用于存储数据的容器。

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。
任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

特点

  • 对象封装数据,对象多了也需要存储。集合用于存储对象。

  • 对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长度的。

集合和数组的区别

  • 数组是固定长度的;集合可变长度的。

  • 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。

  • 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型

数据结构:就是容器中存储数据的方式。

使用集合框架的好处

  1. 容量自增长;
  2. 提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量;
  3. 允许不同 API 之间的互操作,API之间可以来回传递集合;
  4. 可以方便地扩展或改写集合,提高代码复用性和可操作性。
  5. 通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。

集合框架中的泛型

Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。

下面我简单给大家演示下泛型

首先我这里没有给集合定义泛型

输出结果为

定义泛型后,这里已经在编译的时候就报错了

 

 执行结果为

Collection接口

所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:CollectionMap,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。

  • Collection一次存一个元素,是单列集合;

  •  任意的单列集合都可以使用Collection接口中的方法

Collection集合主要有List和Set两大接口

  • List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

  • Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

Collection集合的方法(以ArrayList集合为例):

1、add():向集合的尾部追加指定的元素

2、addAll():将指定集合中的元素都添加到此集合中

这种方法是在指定的集合所有元素添加到此集合的后面

这种方法是在指定的集合所有元素添加到此集合中的指定下标中

注:如被添加的集合为空,则下标必须从0开始

3、clear():移除集合中的所有操作

 这里的移除是移除集合之前的所有操作

注:对集合的增删改移除,查询没有移除

4、contains():如果此集合中包含指定元素,则返回true

对象时,判断的是引用的地址

 集合和集合判断也是判断引用地址,而不是判断两集合的元素,如需要判断两集合之间元素是否相等就需要用到下一个的方法了

5、containsAll():如果此集合中包含指定集合的所有元素,则返回true

 

 只要此的集合包含此指定的集合中任意元素,就返回true

当此集合中有包含指定集合中的元素,且指定集合除被包含的元素还有没有被包含的元素则返回false

6、equals():比较此集合与指定对象是否相等

此方法判断两集合之间的所有元素是否相等,少一个都不行

7、hashCode():返回此集合的哈希码值

8、isEmpty():集合为空,返回true

9、iterator():返回在此集合的元素上进行迭代的迭代器

10、remove():移除此集合中出现的首个指定元素

参数为int,根据下标进行删除

参数为remove根据元素删除相同的元素 

11、removeAll():移除此集合中那些也包含在指定集合中的所有元素

注:对象判断相同是判断引用的地址

12、retainAll():仅保留此集合中那些也包含在指定集合中的所有元素

与上面相反,保留所相同的元素

注:对象判断相同是判断引用的地址

13、size():集合中的元素数

14、toArray():返回包含此集合中所有元素的数组

将此集合转换为数组

15、toArray(T [] a):返回包含此集合中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

Map

Map一次存一对元素,是双列集合。Map存储的一对元素:键–值,键(key)与值(value)间有对应(映射)关系。

特点:无序、以键值对的形式添加元素,键不能重复,值可以重复

Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。 Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象

Map 的常用实现类:

TreeMap:基于红黑树实现。
HashMap:基于哈希表实现。
HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。
LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)

Map集合的主要方法:

1、clear():移除集合中的所有操作

2、containsKey(Object key) 查询集合中是否包含指定的Key,如果包含返回true

3、containsValue(Object value) 查询集合中是否包含指定的value,如果包含返回true

4、entrySet() 返回集合中所包含的键值对所组成的Set集合,每个集合元素都是Map.Entry对象(Entry是Map的内部类)

5、get(Object Key) 返回指定Key对于的vales,如果集合中不包含key则返回null

6、isEmpty() 查询集合是否为空,为空返回true

7、KeySet() 返回集合中所有Key所组成的Set集合

8、Object put(Object key,Object value) 添加一个键值对,如果已存在相同的key值,则新的键值对覆盖旧的键值对

9、putAll(Map m) 将指定的map集合的键值对添加到map集合中

10、remove(Object key) 删除指定key所对于的键值对,返回可以所关联的Value,如果key不存在,返回null

11、size() 返回map集合的键值对个数

12、values()  返回map集合所有value组成的Collection

13、内部类Entry

        1、getKey() 返回Entry里包含的Key值

        2、getValue() 返回Entry里包含的value值

        3、setValue(V value) 设置该Entry里包含的Value值,并返回新设置的value值

至此,系统集合框架之Collection接口和Map接口介绍完毕,但是Collection接口和Map接口远远不止这点,难免有疏漏,非常欢迎留言纠错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值