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(
""
);
}
}
}
分享到:
相关推荐
15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具类(了解)后期扩展.zip15.java集合工具...
常用的Java类集合。
这个包里面包括了Java对数据和日期的处理,以及对图像处理、XML处理和HTML处理等工具类,另外还有其他一些有用类。
java 工具类代码集合 java 工具类代码集合 java 工具类代码集合
Java文件工具类
page.java java分页工具类
java工具类java工具类java工具类java工具类java工具类java工具类java工具类java工具类java工具类
java常用工具类,json,date,http,kafka,md5,线程池
[工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt...
Class类工具 \Cookie工具类 \excel读取 工具类\Java如何生成验证码图片和点击刷新验证码\java获取当前月第一天和最后一天,上个月第一天和最后一天\java实现ftp文件的上传与下载\Json工具类 - JsonUtils.java\JS...
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...
java常用的工具类整理28个java常用的工具类整理28个java常用的工具类整理28个
Java实现的Https请求工具类。 https的java工具类 Https
java常用工具类封装,线程池、elasticsearch高级客户端集成、word,pdf,excel等文档解析
Java数组工具类
java分页工具类 java分页工具类 java分页工具类 java分页工具类 java分页工具类 java分页工具类
NULL 博文链接:https://wenxiang-tune.iteye.com/blog/846379
该工具类下载后拷贝到你要用的包,只需该包名即可
java utils 工具类
Java常用工具类大全,工作5年精心整理.zip