浅析java集合框架

来源:互联网 发布:快递热敏打印软件 编辑:程序博客网 时间:2024/06/06 07:20

一、概述

  • Java集合框架由Java类库的一系列接口、抽象类以及具体实现类组成。 Java集合框架为我们提供了一组基本机制以及这些机制的参考实现,其中基本的集合接口是Collection接口,其他相关的接口还有Iterator接口、Map接口等。这些集合框架中的接口定义了一个集合类型应该实现的基本机制,Java类库为我们提供了一些具体集合类型的参考实现,根据对数据组织及使用的不同需求,只需要实现不同的接口即可。Java类库还为我们提供了一些抽象类,提供了集合类型功能的部分实现,我们也可以在这个基础上去进一步实现自己的集合类型。

二、 Collection接口

(1)Collection接口

  • Collection接口是集合层级结构的根接口。一个集合代表了一组对象,这组对象被称为集合的元素。一些集合允许重复的元素而其他不允许;一些是有序的而一些是无序的。Java类库中并未提供任何对这个接口的直接实现,而是提供了对于它的更具体的子接口的实现。
  • Collection接口的直接子接口主要有三个:List接口、Set接口和Queue接口。

(2)List接口

  • List是一个有序的集合类型。使用List接口可以精确控制每个元素被插入的位置,并且可以通过元素在列表中的索引来访问它。列表允许重复的元素,并且在允许null元素的情况下也允许多个null元素。
  • List接口支持两种访问元素的方式:使用列表迭代器顺序访问或者使用get/set方法随机访问。
1.ArrayList<E>
  • ArrayList<E>是一个可动态调整大小的数组,允许null类型的元素。Java中的数组大小在初始化时就必须确定下来,而且一旦确定就不能改变,在很多场景下不够灵活。ArrayList<E>解决了这个问题,当我们需要一个能根据包含元素的多少来动态收缩伸张的数组时,那么ArrayList<E>正是我们所需要的。
  • ArrayList<E>类访问速度快。
2.LinkedList类
  • LinkedList类代表了一个双向链表,允许null元素。这个类同ArrayList一样,不是线程安全的。
  • LinkedList类写入速度快

(3)Set接口

  • Set接口与List接口的重要区别就是它不支持重复的元素,之多可以包含一个null类型元素。Set接口定义的是数学意义上的“集合”概念。
  • Set接口并没有显式要求其中的元素是有序或是无序的,它有一个叫做SortedSet的子接口,这个接口可以用来实现对Set元素的排序。
1.HashSet
  • HashSet使用的是相当复杂的方式来存储元素的,使用HashSet能够最快的获取集合中的元素,效率非常高。
  • 不能存放同以对象。
2.TreeSet
  • TreeSet也不能存放重复对象,但是TreeSet会自动排序,如果存放的对象不能排序则会报错,所以存放的对象必须指定排序规则。排序规则包括自然排序和客户排序。
  •   ①自然排序:TreeSet要添加哪个对象就在哪个对象类上面实现java.lang.Comparable接口,并且重写comparaTo()方法,返回0则表示是同一个对象,否则为不同对象。
      ②客户排序:建立一个第三方类并实现java.util.Comparator接口。并重写方法。定义集合形式为TreeSet ts = new TreeSet(new 第三方类());

(4)Queue接口

  • Queue接口是对队列这种数据结构的抽象。一般的队列实现允许我们高效的在队尾添加元素,在队列头部删除元素(First in, First out)。
  • Queue<E>接口还有一个名为Deque的子接口,它允许我们高效的在队头或队尾添加/删除元素,实现了Deque<E>的接口的集合类即为双端队列的一种实现(比如LinkedList就实现了Deque接口)。

三、Map接口

  • 一个把键(key)映射到值(值)的对象被称作一个Map(映射表)对象。映射表不能包含重复的键,每个键至多可以与一个值关联。Map接口提供了三个集合视图:键的集合视图、值的集合视图以及键值对的集合视图。一个映射表的顺序取决于它的集合视图的迭代器返回元素的顺序。一些Map接口的具体实现(比如TreeMap)保证元素有一定的顺序,其它一些实现(比如HashMap)则不保证元素在其内部有序。

(1)HashMap

  • HashMap<K, V>是基于哈希表这个数据结构的Map接口具体实现,允许null键和null值。这个类与HashTable近似等价,区别在于HashMap不是线程安全的并且允许null键和null值。由于基于哈希表实现,所以HashMap内部的元素是无序的。

(2)TreeMap

  • TreeMap

四、Iterator接口

  • Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被土狗咬了出血怎么办 狗咬了有点破皮怎么办 遇到咬人的狗怎么办 自己的狗咬伤了怎么办 被蚂蚁咬了很痒怎么办 家里有蚂蚁怎么办能除根 被虫咬了红肿很痒怎么办 身体被虫子咬痒怎么办 手被乌龟咬破了怎么办 被乌龟咬出血了怎么办 被巴西乌龟咬了怎么办 孩子被乌龟咬了怎么办 如果被乌龟咬了怎么办 宝宝被乌龟咬了怎么办 上高中了偏文怎么办 上高中了很烦该怎么办 螳螂生完孩子后怎么办 小区门禁卡丢了怎么办 开门感应卡坏了怎么办 我的螃蟹生卵了怎么办 剑三账号被冻结怎么办 疤痕留下的红印怎么办 马桶刷子沾屎了怎么办 马桶上水管堵了怎么办 孕妇吃了姑娘果怎么办 出差被领导睡了怎么办 智融财富 跑路了怎么办 秒钱要是跑路了怎么办 新买的皮衣皱了怎么办 话说多了伤元气怎么办 话说多了嗓子哑怎么办 桂附地黄丸上火怎么办 乐视倒闭了会员怎么办 汽车上沾了水泥怎么办 汽车上的水泥点怎么办 小米4c启动不了怎么办 被骗取验证码后怎么办 电脑深度睡眠了唤醒不了怎么办 树脂镜片磨花了怎么办 详情页跳出率高怎么办 u盘拒绝访问怎么办win7