`
yaozhiqiang109
  • 浏览: 117217 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java基础--集合对象数据结构

    博客分类:
  • JAVA
阅读更多
Collection接口

Collection是最基本的集合接口,由Collection派生出List和Set接口,通过iterator迭代器遍历集合中的对象。

List接口

List是有序的集合,可以有相同的元素,实现List的接口有LinkedList,ArrayList,Vector。

LinkedList类可以被用作堆栈、队列或双向列表,LinkedList没有同步方法,可以包含null。如果多个线程同时访问一个List,则必须自己实现访问同步。解决方法是在创建List时构造一个同步的List:List list = Collections.synchronizedList(new LinkedList(...));

ArrayList类实现了可变大小的数组,允许包含null,不同步。ArrayList实例的容量会随着不断增加元素而自动增加,可以调用ensureCapacity方法来增加容量。

Vector类是同步的,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因为必须捕获该异常。

Set接口

Set是不包含重复元素的集合对象,Set最多有一个null元素。无序的。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

Map接口

Map中不能包含相同的key,每个key只能映射一个value。

HashTable类实现了接口Map,任何非空的对象都可以作为key或value。由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个相同的对象,即obj1.equals(obj2)==true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同。如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。所以hashCode()方法和equals方法必须同时重写。HashTable是同步的。

HashMap类是非同步的,并且key和value都允许为空。

总结

  如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。

  如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

  要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。

  尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
0
0
分享到:
评论

相关推荐

    JAVA基础-培训班整理.pdf

    Java 的特点之一就是面向对象,是程序设计方法的一种...对于数据结构的改变需要和代码进行通信然后操作,反之亦然。面向对象设计让大 型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。

    达内Java培训-CoreJava全程笔记(WORD唐亮版)

    CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰符 26 CoreJava DAY08 常用类...

    java集合知识-map、set等

    * HashSet集合数据结构是哈希表,所以存储元素的时候, * 使用的元素的hashCode方法来确定位置,如果位置相同,在通过元素的equals来确定是否相同。 * */ hs.add(new Person("lisi4",24)); hs.add(new ...

    Java基础知识点总结.docx

    数据结构 273 Array方法类汇总 304 Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 ...

    Java语言程序设计(基础篇)文字版

    非印影版版,全部都是文字,可再排版。...进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序 设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。

    史上最全Java面试题目大集合

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    使用建议 资源类型:Java面经文档、技术要点或面试编程题 难度:中等 覆盖范围:Java基础知识、面向对象、集合框架、

    4. 熟悉Java集合框架的使用,包括List、Set、Map等常用数据结构的操作。 5. 学习多线程编程的基本概念和技术,包括线程的创建、同步、通信等。 6. 掌握IO流的基本用法,包括字节流和字符流的区别、文件操作等。 7. ...

    Java集合框架.pdf

    Java集合框架中定义了一些接口,这些接口是实现各种数据结构的基础。 下面是Java集合框架中的一些常用接口: 1、Collection接口 Collection接口是所有集合类的父接口,它定义了集合的基本操作,如添加、删除、遍历等...

    涵盖了 Java 基础、集合、源码、并发、虚拟机、框架、数据库、网络编程、设计模式、新特性和数据结构等多个知识领域的面试突击

    Java基础知识:数据类型、关键字、面向对象、集合框架、异常处理等 Java核心技术:I/O、多线程、网络编程、反射、泛型等 Java虚拟机:内存模型、垃圾收集器、类加载机制等 Java企业级开发:Spring、Hibernate、MyBatis等...

    java实现将实体类list集合,转化成geojson字符串

    GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法(JavaScript Object Notation, 简称JSON)的地理空间信息数据交换格式。GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持下面这几...

    java基础.txt 百度云

    Java 集合与数据结构 JavaIO 流全解析 深入理解 Java 多线程 Java 网络编程 手动开发一个 Web 服务器 深入理解 Java 注解+反射 Java23 种设计模式 学会 Java 正则表达式 JDBC 详解 Java 数据结构和算法 ...

    精通java集合框架--List,Set..

    因此,允许您更改基本的数据结构而不必改变其它代码。框架接口层次结构如下图所示。 有的人可能会认为 Map 会继承 Collection。 在数学中,映射只是对(pair)的集合。但是,在“集合框架”中,接口 Map 和 ...

    Java集合框架使用总结

    所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。 Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了。这样...

    人工智能-项目实践-搜索引擎-java实验1-实现搜索引擎的倒排索引数据结构

    java实验1-实现搜索引擎的倒排索引数据结构 实验1知识点: 集合类的使用如ArrayList,HashMap ◦对这些集合类的操作包括:遍历、添加、排序,得到集合的大小、判断集合里是否已存在指定元素 第三是熟悉对象的序列...

    Java集合总结.txt

    数据结构:一维数组 LinkedList: 数据结构:双向链表 Vector: 数据结构:一维数组 Stack: 数据结构:一维数组 特点:模拟了栈的模式 Set -- Set接口(没有对下标操作的方法) 特点...

    重要的Java概念::rocket:完整的Java-从A到Z║:books:Java的所有基本概念和重要概念的注释和程序-OOPS,数据结构,算法,设计模式和开发

    [1] Java-基础知识和面向对象[完成] 注意事项[有用的信息]: 程式 : | | | | | | || | | 。 [2] Java-泛型,集合和异常处理[完成] 注意事项[有用的信息]: 程式 : 。 [3] Java-文件,I / O,序列化和联网[完成] ...

    Java数据结构与算法中的源代码和applet - 站长下载

    书名:数据结构Java版 图书编号:2086963 出版社:清华大学 定价:118.0 ISBN:730213544 作者:(美)福特(Ford,W.H.),(美)托普(Topp,W.R.) 著,梁志敏 译 出版日期:2006-11-11 版次: 开本: 简介: 本书...

    java维基源码-java-extra-lectures:有关Java额外讲座的源代码-不在Wiki书的一章中

    数据结构-集合和地图 Java枚举- Java 8流和Lambdas- Jar文件- Java I / O(java.io类)- Java可选- Systembolaget产品的JDBC和Servlet示例- Java网络- Java Swing-GUI编程- Java中的Unicode和UTF以及java.nio-

    JAVA 2平台安全技术-结构,API设计和实现

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    Java基础最全笔记文档

    5. Collection集合、数据结构、List集合、泛型、Set集合、可变参数 6. 集合工具类Collections、Map集合、集合嵌套、不可变集合 7. Stream流、异常处理 8. Logback日志框架、阶段项目 9. File、方法递归、字符集、IO...

Global site tag (gtag.js) - Google Analytics