`
yaozhiqiang109
  • 浏览: 119450 次
  • 性别: 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基础--3.面向对象-1

    以上只是Java面向对象编程的基础知识点,实际开发中,还需要掌握更多的高级特性和设计模式,如泛型、集合框架、异常处理、并发编程、IO流、网络编程等,这些都是成为一名熟练Java开发者不可或缺的部分。学习Java面向...

    java---数据结构

    Java集合框架包括List、Set和Queue接口,以及ArrayList、LinkedList、HashSet、 TreeSet、HashMap、TreeMap等实现类。集合用于存储一组不重复的对象,而Map则关联键值对,提供高效的查找和访问。例如,HashMap以散列...

    java基础 集合-21-对象的一对多与多对多

    Java集合框架提供了多种数据结构供选择,根据实际需求可以选择适当的数据结构。同时,为了保持数据的一致性,可能需要在“一”端添加删除操作时同步更新“多”端的集合。 3. **对象的多对多关系**: 多对多关系...

    【程序员面试准备3】-面向对象-C++基础-数据结构-JAVA-内存管理-指针

    【程序员面试准备】系列主要涵盖了六个关键领域,包括面向对象编程、C++基础知识、数据结构、Java语言、内存管理和指针。这些知识点是任何IT专业人员,尤其是面试时需要掌握的核心概念。 首先,面向对象编程(OOP)...

    java基础---PPT讲稿.zip

    6. **集合框架**:Java集合框架是处理对象集合的一组接口和类,如ArrayList、LinkedList、HashSet、HashMap等,以及接口List、Set、Map。 7. **输入/输出流**:Java的I/O流系统用于读写文件和网络通信,包括文件流...

    protoc.exe和protobuf-java-3.6.1集合

    标题中的"protoc.exe和protobuf-java-3.6.1集合"指的是Google开源的Protocol Buffers(简称protobuf)工具的两个关键组件。protobuf是一种高效的数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种编程...

    java基础教程----精华版

    - `java.util`包中的ArrayList, LinkedList, HashMap等是常用的集合类,提供了存储和操作对象的方法。 - 集合框架包括List, Set, Queue, Map等接口,以及它们的实现类。 7. **多线程**: - Java内置对多线程的...

    Java面试题-基础+集合原理.pdf

    Java面试题-基础+集合原理 本资源主要涵盖Java面试题的基础知识和集合原理,涵盖Object-Oriented Programming(OOP)相关知识点,包括多态(Polymorphism)、方法Overload和Override、等于运算符(==)和equals()...

    JAVA数据结构-JAVA基础知识

    ### JAVA数据结构与基础知识详解 #### 一、Java与面向对象程序设计 Java是一种广泛使用的高级编程语言,其核心特点之一就是支持面向对象编程(OOP)。面向对象编程通过将数据和行为封装在对象中来简化软件开发和...

    Java基础-经典入门教程

    15. **集合框架**:Java集合框架提供了多种数据结构,如ArrayList、LinkedList、HashSet、HashMap等,用于存储和操作对象。 16. **输入输出流**:Java的I/O流处理涉及文件读写、网络通信等,如FileInputStream、...

    JAVA基础--复习笔记.pdf

    这份复习笔记将涵盖Java的基础知识,包括语法、数据类型、控制结构、类与对象、异常处理、输入/输出以及集合框架等核心概念。 1. **Java语法** Java的语法基于C++,但简化了一些复杂的特性。例如,Java没有指针,...

    java基础之集合

    - **组织数据**:在类的内部,对数据进行有效的组织,使得数据结构更加清晰合理。 - **高效检索**:支持简单而快速地搜索大量条目的功能,这对于处理大数据量的应用尤为重要。 - **动态插入与删除**:部分集合提供了...

    Java 实例 - 集合输出源代码+详细指导教程.zip

    本教程的"Java实例 - 集合输出源代码+详细指导教程.zip"旨在帮助开发者深入理解Java集合框架,并通过实例源代码进行实践学习。 集合框架包括接口、类和算法,主要由以下部分组成: 1. **接口**:这些是集合的抽象...

    Doug Lowe-Java All-in-One for Dummies-Wiley (2017)

    字符串、数组和集合部分是Java编程中的重要数据结构。在这一部分中,书中对字符串的处理、数组的创建和使用、以及ArrayList和LinkedList类的使用都进行了详细的讨论,包括如何通过集合框架进行批量数据操作。 在...

    java基础1-8章复习-final.rar

    在Java中,这可能涉及到数据结构如数组或集合,以及面向对象编程中的类和方法,用于计算、存储和展示分数。 3. **GoldenCoin.java**:可能是一个涉及黄金硬币的示例,可能涵盖了类的设计,属性(如硬币的数量、重量...

    java基础,集合,面向对象

    - **HashMap**:存储键值对的数据结构,通过键的哈希值快速定位值,提供O(1)的平均时间复杂度。 了解并熟练掌握这些Java基础知识,对于进行日常开发工作至关重要。通过不断练习和应用,你可以构建出更加高效和可靠...

    JAVA基础-培训班整理.pdf

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

    java--基础程序知识.rar

    - Java集合框架提供了各种数据结构,如ArrayList、LinkedList、HashSet、HashMap等,用于存储和操作对象。 - **泛型**:在集合类中使用泛型可以限制元素类型,提高代码安全性。 5. **输入/输出流** - Java的I/O...

    Java-C-JS数据结构与算法合集

    这些文件《数据结构与算法分析—C语言描述.pdf》、《数据结构与算法分析.pdf》、《数据结构与算法JavaScript描述.pdf》和《数据结构与算法].pdf》很可能详细介绍了以上概念,并提供了具体的实现和实例,帮助读者深入...

    最新---数据结构(java版)第4版-叶核亚[全套]

    1. **数组**:是最基础的数据结构,提供了随机访问和快速查找的能力,但插入和删除操作通常效率较低。 2. **链表**:在不连续的内存空间中存储元素,插入和删除操作快速,但访问速度较慢,因为需要遍历链接。 3. **...

Global site tag (gtag.js) - Google Analytics