1.
为什么要了解Java
集合类
Java
集合类提供了如线性表,链表和哈希表等基础数据结构的实现,通过它可以实现各种你想要的数据结构,如stack
,queue
等,了解Java
集合类的工作原理可以编出更高效性能的程序,另外了解其工作原理可以更好地使用它,避免因为滥用而出现性能上的问题。事实证明,很多性能上的问题都是因为使用不当引起的。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│
└Stack
└Set
└SortedSet
└HashSet
└TreeSet
Map
├Hashtable
├HashMap
├SortedMap
└TreeMap
└WeakHashMap
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
在我们软件开发的过程中,当碰到问题了,我们第一步就是重现问题,然后进行
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内存泄漏问题,并将其与C/C++的内存泄漏进行对比...
最后,Java的并发集合类如`ConcurrentHashMap`, `ConcurrentLinkedQueue`, `CopyOnWriteArrayList`等,提供了线程安全的数据结构,能够在多线程环境下保证数据的一致性和正确性,避免了手动加锁的复杂性。...
2. Java集合框架:考试系统需要处理大量的数据,如试题库、考生信息等,Java集合框架(如ArrayList、LinkedList、HashMap等)提供了数据存储和操作的高效工具。 3. 异常处理:Java异常处理机制确保了程序在遇到错误...
通过JAVA的集合框架,可以实现试题的分类、搜索和随机选取。 五、用户认证与权限管理 考试系统需具备用户注册、登录功能,并对不同角色(如管理员、教师、学生)设置相应权限。可以使用Spring Security等框架实现...
本项目中的考试系统运用了Java的基础语法、类和对象、异常处理、集合框架等内容。 2. **MVC设计模式**:在系统设计中,很可能采用了Model-View-Controller(MVC)架构模式。这种模式将业务逻辑、数据和用户界面分离...
- **集合框架**:详细讲解了Java集合框架的组成部分,如List、Set、Map等接口及其具体实现类。 - **异常处理**:通过实际案例分析异常处理机制,包括try-catch-finally语句块、自定义异常类等。 - **泛型**:深入...
- **使用Java集合和数组**:介绍Java标准库中的集合框架,包括List、Set、Map等接口及其具体实现类,以及数组的操作。 - **处理常见数据格式**:讲解如何处理XML、JSON等常用数据交换格式,以及如何使用Java内置...
**并发工具类**: - `CountDownLatch`:允许一个或多个线程等待其他线程完成操作。 - `CyclicBarrier`:让一组线程等待至某个状态后再全部同时执行。 - `Semaphore`:控制同时访问特定资源的线程数量。 **并发容器*...
- 并发编程(Concurrency):探讨线程、同步、锁和并发工具类,如ExecutorService、Semaphore等。 - I/O流(Streams):介绍输入/输出流的概念,包括FileInputStream、FileOutputStream、BufferedReader等。 - ...
J2EE通信 通信概述 JMS的详细情况 消息驱动EJB 小结 第24章 Java数据对象(JDO) 概述 JDO对象模型 JDO API JDO实例的生命周期 JDO和EJB 开发可持久类 范例应用程序 配置FFJ...
1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...
- **JDK安装**:下载并安装Java Development Kit,包含Java编译器、运行时环境等工具。 #### 1.3 Java核心API - **集合框架**:如List、Set、Map等。 - **异常处理**:try-catch-finally语句块、自定义异常等。 - *...
1. Java编程基础:理解类、对象、继承、多态等概念,以及异常处理、集合框架的使用。 2. J2EE架构:理解MVC(Model-View-Controller)模式,以及Servlet和JSP的交互。 3. 数据库设计:了解关系型数据库的基本原理,...
4. **多线程**:线程的创建、同步机制(synchronized、Lock)、并发工具类。 5. **IO流**:字节流、字符流、缓冲流、对象序列化。 6. **网络编程**:Socket通信、HTTP协议。 7. **JVM内存模型**:堆、栈、方法区、...
在Java编程中,`java.util.Collections` 和 `java.util.Arrays` 是两个极为重要的类,它们为处理数据结构提供了丰富的工具和算法支持。本文旨在深入探讨Java Collections Framework中的算法部分,通过对`Arrays`类和...
在本资源中,“软件类专业实习报告+毕业论文等集合”提供了一系列与软件开发和网站构建相关的学习资料,包括实习报告和毕业论文。这些文档通常包含丰富的实践经验和理论知识,对于学习者来说是宝贵的参考资料。 一...
开源工具如Weka、Java Javadoc、CLUTO、MG4J和wCluto等也被广泛采用。 Weka是一个基于Java的数据挖掘软件,包含了许多机器学习算法,如决策树、聚类、回归等。CLUTO是用于聚类的库,而MG4J提供信息检索相关的功能。...