java容器-Collection和Map的理解

本文详细介绍了Java中的容器类,重点讲解了Collection和Map接口的使用。Collection接口下,着重讨论了List子接口,包括LinkedList、ArrayList和Vector类的特性与常用方法。List接口中的元素有序,允许重复,适合堆栈和队列操作。ArrayList提供快速随机访问,而LinkedList适合插入和删除。此外,还介绍了Set接口和Map接口,其中Set不允许重复元素,而Map提供了键值对的映射,常用的实现类有HashMap、Hashtable和LinkedHashMap。HashMap是非同步的,适用于大多数情况,而Hashtable是同步的。LinkedHashMap则保证了迭代顺序,与插入顺序一致。最后,文章总结了如何根据需求选择合适的容器类。
摘要由CSDN通过智能技术生成

1.JAVA内部的容器类

容器:在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体
在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系:
在这里插入图片描述
在编程的时候,有时候需要集中存放多个数据,可以用数组来保存多个数据,但是数组的长度是不可变的,一旦数组的长度确定了之后就无法再改变,如果要保存可变长度的数据的话,数组肯定是不行的。而且数组也无法保存具有一定关联的数据。为了可以保存上面的这些信息,java提供了集合类,主要是负责保存、盛装数据的。因此集合相当于一个容器类。
集合类有两个派生类,Collection和Map.

2.Collection

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口” 如List和Set(List是有序、重复的集合,set是无序、不可重复的集合)。

2.1 List (以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。)

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

2.1.1 LinkedList类

  • 由列表实现的List,实现所有可选的列表操作,并且允许所有元素(包括 null)。对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
  • 此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。
  • 所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)
  • 方便插入和删除,但是不方便与随便检索 (按插入顺序排序)
  • 注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须保持外部同步。

2.1.2 ArrayList类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值