Java学习之集合

java.util包中提供了一系列可使用的集合,称为集合框架。集合框架主要由Collection和Map两个根接口派生出来的接口和实现类组成。

 

 

 

82d14fcfce24468b8518067a2871ecf0.jpg

List集合特点:元素有序、可重复;

Set集合的特点:元素无序并且不可重复。

List接口的主要实现类:ArrayList和LinkedList;

Set接口的主要实现类:HashSet和TreeSet.

Collection接口:

  • Collection接口是List、Set和Queue等接口的父接口,该接口定义的方法既可用于操作List集合也可以用于操作Set和Queue集合。
  • Collection接口里定义的一系列操作元素的方法 :

75998a166b734b7bab7b4209bdfe1779.jpg

 

List接口:

  • 在List集合里允许出现重复的元素,所有的元素时以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点:元素有序,即元素的存入顺序和取出顺序一致。

 

45fcaafabadd416493b6f0b4464dda93.jpg

ArrayList集合:

  •  ArrayList 是 List 接口的一个实现类,它是程序中最常见的一种集合。在 ArrayList 内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存中分配一个更大的数组来存储这些元素,因此可以将 ArrayList 集合看作一个长度可变的数组。

  • 正是因为 ArrayList 内部的数据存储结构是数组形式,在增减指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增删操作。但是,这种数组结构允许程序通过索引的方式来访问元素,因此使用 ArrayList 集合在遍历和查找元素时显得非常高效。
    ArrayList 集合中大部分方法都是从父类 Collection 和 List 继承过来的,其中 add()方法和 get()方法用于实现元素的存取。
     

LinkedList集合: 

  •  ArrayList 集合在查询元素时速度很快,但在删除元素时效率很低,为了克服这种局限性,可以使用 List接口的另外一个实现类 LinkedList。该集合内部包含了两个 Node 类型的 first和 last属性,维护一个双向循环链表,链表中的每个元素都使用引用的方式来记住它的前一个和后一个元素,从而可以将所有的元素连接起来。当插人一个新元素时,只需要修改元素之间的引用关系即可,删除一个元素时也是这样。LinkedList 集合添加元素和删除元素的过程如图 8-2 和图 8-3 所示:

e56550d557cc47649073e86c8cd30f3c.jpeg

  •  图 8-2 和图 8-3 描述了 Linkedl.ist 集合添加和删除元素的过程。其中,图 8-2 新增一个元素,图中的元素 1 和元素 2 在集合中为前后关系,在它们之间新增一个元素,只需要让元素1 记住它后面的是新的元素,让元素 2 记住它前面的是新的元素就可以了。图 8-3 为删除元素,删除元  素 3 只需要让元素 1 和元素 2 变为前后关系就可以了。对于频繁地插人或删除元素的操作,建议使用 LinkedList 类,效率较高。LinkedList 除了具备增删效率高的特点,还为元素的操作定义了一些特有的常用方法,如表 8-3 所示:

3476bde290b44ff5a959e295baaa88e2.jpg

Iterator接口:

  • Iterator 接口是 Java 集合框架中的一员,但它与 Collection,Map 接口有所不同,
    Collection 接口和 Map 接口主要用于存储元素,而 Iterator 主要用于迭代访问(遍历)Collection 中的元素,因此 Iterator 对象也称为迭代器。可以通过 Collection 接口中的 iterator()方法得到该集合的迭代器对象,只要拿到这个对象,使用迭代器就可以遍历这个集合。接下来通过一个实例来学习如何使用 Tterator来遍历集合中的元素。
  • Iterator 仅用于遍历集合,如果需要创建 Tterator 对象,则必须有一个被迭代的集合。

b7a9542810ef4fe39b3cd23722ad126f.jpg

ListIterator接口:

  • List接口额外提供了一个·ListIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了一些用于操作List的方法:

 

5058b837be694648aec10c8f4c422b6d.jpg

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

captain_dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值