Java基础
文章平均质量分 71
walkerkalr
学无止境,梦想不止
展开
-
深入理解ArrayList
简要介绍ArrayList是基于动态数组实现的,其容量能自动增长。ArrayList继承了AbstractList,实现了List,提供了相关的添加、删除、修改、遍历等功能。ArrayList实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速随机访问功能。ArrayList实现了Cloneable接口,即...原创 2018-07-26 11:05:55 · 107 阅读 · 0 评论 -
深入理解TreeSet
简要介绍TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet, Cloneable, java.io.Serializable接口。TreeSet 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法。TreeSet 实现了NavigableSet接口,意味着...原创 2018-07-26 21:11:18 · 355 阅读 · 0 评论 -
深入理解TreeMap
简要介绍TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。TreeMap 实现了Cloneable接口,意味着它能被克隆。TreeMap 实现了java.io...原创 2018-07-26 11:35:01 · 21383 阅读 · 0 评论 -
深入理解LinkedList
简要介绍LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。L...原创 2018-07-26 11:31:17 · 155 阅读 · 0 评论 -
深入理解HashSet
简要介绍HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。HashSet是非同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections....原创 2018-07-26 11:25:34 · 185 阅读 · 0 评论 -
深入理解HashMap
简要介绍HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap的实现不是同步的...原创 2018-07-26 11:22:32 · 182 阅读 · 0 评论 -
集合快速失败检测机制(fail-fast)
简要介绍“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制。当多个线程对集合进行结构上的改变的操作时,有可能会产生fail-fast机制。记住是有可能,而不是一定。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 Con...原创 2018-07-26 11:18:21 · 502 阅读 · 0 评论 -
Collections使用
public static void main(String[] args) { int arr[] = {1,3,5,4,6,2}; ArrayList<Integer> arrInt = new ArrayList<Integer>(); for(int i=0; i<arr.length;++i){ ...原创 2018-07-26 11:11:32 · 132 阅读 · 0 评论 -
Arrays使用
public static void main(String[] args) { int arr[] = {1,3,5,4,6,2}; printArr("before sort",arr); Arrays.sort(arr); printArr("after sort",arr); Arrays.fill(arr...原创 2018-07-26 11:08:43 · 199 阅读 · 0 评论 -
深入理解Vector
简要介绍Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector 继承了AbstractList,实现了List;所以它是一个队列,支持相关的添加、删除、修改、遍历等功能。Vector没有实现S...原创 2018-07-26 21:17:38 · 348 阅读 · 0 评论