`

Java集合工具类的综述

阅读更多

 

Java 集合类

 

1. 为什么要了解Java 集合类

Java 集合类提供了如线性表,链表和哈希表等基础数据结构的实现,通过它可以实现各种你想要的数据结构,如stackqueue 等,了解Java 集合类的工作原理可以编出更高效性能的程序,另外了解其工作原理可以更好地使用它,避免因为滥用而出现性能上的问题。事实证明,很多性能上的问题都是因为使用不当引起的。

 

2.Java 集合类的概述

2.1 Java collection 的继承关系

 

Collection  
├List  
│├LinkedList  
│├ArrayList  
│└Vector  
  └Stack  
└Set  

└SortedSet

└HashSet

└TreeSet


Map  
├Hashtable  
├HashMap 

├SortedMap

  └TreeMap  
└WeakHashMap 

2.2 Java collection 概述

2.2.1 List 的简要概述

Java2 的集合框架,抽其核心,主要有三种: List Set Map

 

1. List 的主要特性

1) 有序的 Collection

2) 使用该接口可以精确定义元素插入的位置。

3) 用户能够通过索引来访问 List 的元素。

4) 元素允许重复,允许有 null 元素,基于 array list 适合查询, linkedList 适合添加删除操作。

 

2. List 的主要方法

boolean contains(Object o);

Iterator<E> iterator();

Object[] toArray();

boolean add(E e)

boolean remove(Object o);

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c);

boolean addAll(int index, Collection<? extends E> c);

boolean removeAll(Collection<?> c);

boolean retainAll(Collection<?> c);

void clear();

E get(int index);

E set(int index, E element);

void add(int index, E element);

E remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o);

 

2.Set 是不含重复元素的、无序的 Collection

 

3.Map 是一种以 key value 形成对应关系的容器, key 重复会覆盖 value

 

2.2.2 Java collection fail-fast 机制

在我们软件开发的过程中,当碰到问题了,我们第一步就是重现问题,然后进行 debug ,找出问题的原因,但往往有些 bug 隐藏的比较深,经过 n 次特定的操作的在特定的环境下才会重现,或者出错后,报错的 stack traces 的没有指出错误的真正起点。
所以我们设计一个 Fail Fast 的系统显得很重要了。
很多人设计的系统,为了增强系统的健壮性,自动的将系统中出现的问题处理掉,并继续运行,但是在未来的某个时间引发奇怪的错误。
fail fast 的系统的做法却是相反的,当有问题发生,立即出错,并将出错信息显示出来。这样 bug 就很容易被发现,而不会进入到最终的产品中。

java.util 包中的集合类都返回 fail-fast 迭代器,这意味着它们假设线程在集合内容中进行迭代时,集合不会更改它的内容。如果 fail-fast 迭代器检测到在迭代过程中进行了更改操作,那么它会抛出 ConcurrentModificationException ,这是不可控异常。

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

 

public class TestFastFail {

   

    public static void main(String[] args) {

       List<String> list = new ArrayList<String>(20);

       for ( int i = 0; i < 20; i++) {

           list.add( "test" );

       }

      

        // 在迭代器迭代过程中,如果集合被修改被抛出 java.util.ConcurrentModificationException

       // 这就是 fast fail 的意义,早点发现程序的错误,并抛出异常

       Iterator<String> iterator = list.iterator();

       for ( int i = 0; iterator.hasNext(); i++) {

           String string = iterator.next();

           System. out .println(string);

           list.add( "" );

       }

    }

}

分享到:
评论

相关推荐

    JAVA程序内存泄漏综述

    ### JAVA程序内存泄漏综述 #### 一、Java内存泄漏基本概念 在程序开发中,内存管理是一项重要的任务。不同的编程语言采用了不同的内存管理机制。本文重点讨论Java内存泄漏问题,并将其与C/C++的内存泄漏进行对比...

    JAVA专题技术综述之线程篇.rar_java 线程_java 线程

    最后,Java的并发集合类如`ConcurrentHashMap`, `ConcurrentLinkedQueue`, `CopyOnWriteArrayList`等,提供了线程安全的数据结构,能够在多线程环境下保证数据的一致性和正确性,避免了手动加锁的复杂性。...

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告).rar

    2. Java集合框架:考试系统需要处理大量的数据,如试题库、考生信息等,Java集合框架(如ArrayList、LinkedList、HashMap等)提供了数据存储和操作的高效工具。 3. 异常处理:Java异常处理机制确保了程序在遇到错误...

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)

    通过JAVA的集合框架,可以实现试题的分类、搜索和随机选取。 五、用户认证与权限管理 考试系统需具备用户注册、登录功能,并对不同角色(如管理员、教师、学生)设置相应权限。可以使用Spring Security等框架实现...

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告).zip

    本项目中的考试系统运用了Java的基础语法、类和对象、异常处理、集合框架等内容。 2. **MVC设计模式**:在系统设计中,很可能采用了Model-View-Controller(MVC)架构模式。这种模式将业务逻辑、数据和用户界面分离...

    Thinking+in+Java+4th+Edition

    - **集合框架**:详细讲解了Java集合框架的组成部分,如List、Set、Map等接口及其具体实现类。 - **异常处理**:通过实际案例分析异常处理机制,包括try-catch-finally语句块、自定义异常类等。 - **泛型**:深入...

    java技术手册(第6版)

    - **使用Java集合和数组**:介绍Java标准库中的集合框架,包括List、Set、Map等接口及其具体实现类,以及数组的操作。 - **处理常见数据格式**:讲解如何处理XML、JSON等常用数据交换格式,以及如何使用Java内置...

    Java宝典(第四版)

    **并发工具类**: - `CountDownLatch`:允许一个或多个线程等待其他线程完成操作。 - `CyclicBarrier`:让一组线程等待至某个状态后再全部同时执行。 - `Semaphore`:控制同时访问特定资源的线程数量。 **并发容器*...

    Thinking in java 4th eidtion

    - 并发编程(Concurrency):探讨线程、同步、锁和并发工具类,如ExecutorService、Semaphore等。 - I/O流(Streams):介绍输入/输出流的概念,包括FileInputStream、FileOutputStream、BufferedReader等。 - ...

    Java数据编程指南

    J2EE通信 通信概述 JMS的详细情况 消息驱动EJB 小结 第24章 Java数据对象(JDO) 概述 JDO对象模型 JDO API JDO实例的生命周期 JDO和EJB 开发可持久类 范例应用程序 配置FFJ...

    超爽的自学课件(java)

    1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...

    java源码java+sql企业固定资产管理系统

    - **JDK安装**:下载并安装Java Development Kit,包含Java编译器、运行时环境等工具。 #### 1.3 Java核心API - **集合框架**:如List、Set、Map等。 - **异常处理**:try-catch-finally语句块、自定义异常等。 - *...

    java毕业设计——基于J2EE的B2C电子商务系统开发

    1. Java编程基础:理解类、对象、继承、多态等概念,以及异常处理、集合框架的使用。 2. J2EE架构:理解MVC(Model-View-Controller)模式,以及Servlet和JSP的交互。 3. 数据库设计:了解关系型数据库的基本原理,...

    PaperTestQ&amp;A笔试综述(20170824152521)

    4. **多线程**:线程的创建、同步机制(synchronized、Lock)、并发工具类。 5. **IO流**:字节流、字符流、缓冲流、对象序列化。 6. **网络编程**:Socket通信、HTTP协议。 7. **JVM内存模型**:堆、栈、方法区、...

    Collections Framework中的算法(之一)――综述

    在Java编程中,`java.util.Collections` 和 `java.util.Arrays` 是两个极为重要的类,它们为处理数据结构提供了丰富的工具和算法支持。本文旨在深入探讨Java Collections Framework中的算法部分,通过对`Arrays`类和...

    软件类专业实习报告+毕业论文等集合

    在本资源中,“软件类专业实习报告+毕业论文等集合”提供了一系列与软件开发和网站构建相关的学习资料,包括实习报告和毕业论文。这些文档通常包含丰富的实践经验和理论知识,对于学习者来说是宝贵的参考资料。 一...

    WEB数据挖掘资源综述.pdf

    开源工具如Weka、Java Javadoc、CLUTO、MG4J和wCluto等也被广泛采用。 Weka是一个基于Java的数据挖掘软件,包含了许多机器学习算法,如决策树、聚类、回归等。CLUTO是用于聚类的库,而MG4J提供信息检索相关的功能。...

Global site tag (gtag.js) - Google Analytics