展开全部

线性表,链表,哈希表是常e69da5e6ba9062616964757a686964616f31333363386138用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

Collection接口

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

所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。

如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:

Iterator  it  =  collection.iterator();  //  获得一个迭代子

while(it.hasNext())  {

Object  obj  =  it.next();  //  得到下一个元素

}

由Collection接口派生的两个接口是List和Set。

List接口

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。

和下面要提到的Set不同,List允许有相同的元素。

除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。

LinkedList类

LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:

List  list  =  Collections.synchronizedList(new  LinkedList(...));

ArrayList类

ArrayList实现了可变大小的数组。

它允许所有元素,包括null。ArrayList没有同步。

size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。

每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

java中collection_java中collection是什么?怎么理解?怎么使用?相关推荐

  1. java new collection_Java中的集合Collection

    集合是什么? Java集合类存放于 java.util 包中,是一个用来存放对象的容器. 注意:①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类 ...

  2. java 中iterator 和 collection接口源码

    iterator接口和具体的容器中实现的iterator 对象(以ArrayList为例) iterator: public interface Iterator<E> {boolean ...

  3. 5.0 java集合框架中的接口collection属于_JAVA集合框架 - osc_cyo2dovg的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.为什么要使用集合 单个数据,可以用变量保存: 多个数据,可以用数组保存: 但是对于存储多个数据且数量不确定的情况,使用集合: 二.集合和数组的区别 (1)数组: 1.只能保存同一种类型的数据: 2 ...

  4. Java数据结构一 —— Java Collections API中的表

    1.Collection接口 位于java.util包中,以下是重要的部分. 1 public interface Collection<AnyType> extends Iterable ...

  5. Java Persistence API中的FetchType LAZY和EAGER之间的区别?

    我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...

  6. JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介

    JDK提供了大量优秀的集合实现供开发者使用,合格的程序员必须要能够通过功能场景和性能需求选用最合适的集合,这就要求开发者必须熟悉Java的常用集合类.本文将就Java Collections Fram ...

  7. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  8. java 8 stream中的Spliterator简介

    文章目录 简介 tryAdvance trySplit estimateSize characteristics 举个例子 总结 java 8 stream中的Spliterator简介 简介 Spl ...

  9. java中elements_Java中的提供程序elements()方法

    可以使用类java.security.Provider中的elements()方法获取哈希表中值的枚举.此方法不需要任何参数,它返回哈希表中值的枚举. 演示此的程序如下所示- 示例import jav ...

最新文章

  1. 剑指offer:面试题27. 二叉树的镜像
  2. Elasticsearch 5 Ik+pinyin分词配置详解
  3. 各常用分类算法的优缺点总结:DT/ANN/KNN/SVM/GA/Bayes/Adaboosting/Rocchio
  4. JVM--对象的实例化过程
  5. 【报错笔记】 启动tomcat服务器报错Context initialization failed
  6. 又一次Java线程卡死的调试经历
  7. 《视觉SLAM十四讲》课后习题—ch3
  8. ArcGIS API for Silverlight 入门学习笔记(一)hello world 补充问题
  9. BeX5平台简明部署过程
  10. 大数据项目实施工作流程及大数据运维的日常工作流程
  11. JVM调优实践:记录初次JVM调优经历
  12. Android5更新包,Android 5.x OTA Update官方文档(四、OTA更新包解读)
  13. 生成长微博(文转图)方法
  14. ajax去掉session,PHP中解决ajax请求session过时退出登陆问题
  15. 阿里前端面经(笔试+3轮技术面+HR面)
  16. BNUOJ 53073 【找规律】
  17. 计算机科学个人陈述中文,留学文书写作范例-计算机科学(个人陈述)
  18. Linux的自我修养
  19. 过百万,小小庆祝一下
  20. 2023年1月中国数据库排行榜:OceanBase 持续两月登顶,前四甲青云直上开新局

热门文章

  1. 栈与队列:7-6 彩虹瓶
  2. 已知方位角和仰角求(单位)方向向量
  3. 【图(上)】六度空间
  4. 引发了皮蛋风波 丹尼-我不是记者 只想尝新
  5. 24-讲一讲公平锁和非公平锁,为什么要“非公平”?
  6. 成功解决设置vive cosmos无线套件遇到的三个问题
  7. babylon导入_从字符串或json动态载入babylonjs文件
  8. 十进制浮点数转成二进制(IEEE 754 在线计算器)
  9. 1089 狼人杀-简单版
  10. LTE(4G) - NR (5G) 手机发送能力(UE Capability)