随笔分类 -  数据结构

摘要:集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看Concurren 阅读全文
posted @ 2017-10-24 10:35 竹马今安在 阅读(507) 评论(0) 推荐(0)
摘要:①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法 阅读全文
posted @ 2017-10-24 10:27 竹马今安在 阅读(1806) 评论(0) 推荐(0)
摘要:在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。 1.什么是同步修改? 当一个或多个线程正在遍历一个集合Collection,此时另一个线程修改了这个集合的内容(添加,删除或者修改)。这就是并发修改 2.什么是 fail-fast 机制? fail-fast机制在遍历一个集合时,当集合结构 阅读全文
posted @ 2017-10-24 10:17 竹马今安在 阅读(302) 评论(0) 推荐(0)
摘要:斜堆是左式堆的自调节形式。 阅读全文
posted @ 2017-10-03 19:21 竹马今安在 阅读(193) 评论(0) 推荐(0)
摘要:左式堆是为了方便合并操作实现的。 左式堆性质: 任意节点X的零路径长是X到任意没有两个儿子的节点的最短路径。任意一个节点的零路径长比他儿子的零路径长的最大值大1,null的零路径长是-1;对于x来说,他的左儿子的零路径长要大于等于右儿子。 通过递归实现代码如下 阅读全文
posted @ 2017-10-03 18:15 竹马今安在 阅读(232) 评论(0) 推荐(0)
摘要:因为二叉堆满足完全二叉树,一颗高为h的完全二叉树有2^h到2^h-1个节点,那么就可以用数组来表示。public class HeapDemo>{ public HeapDemo(){ this(DEFAULT_CAPACITY); } public HeapDemo(int capacity){ makeEmpty(); enlarg... 阅读全文
posted @ 2017-10-03 17:51 竹马今安在 阅读(553) 评论(0) 推荐(0)
摘要:public class QuadraticProbingHashTable { private static final int DEFAULT_TABLE_SIZE=10; private HashEntry[] array; private int currentsize; public QuadraticProbingHashTable(){ this(... 阅读全文
posted @ 2017-09-28 20:46 竹马今安在 阅读(1281) 评论(0) 推荐(0)
摘要:public class SeparateChainingHashTable { public SeparateChainingHashTable(){ this(DEFAULT_TABLE_SIZE); } public SeparateChainingHashTable(int size){ theLists=new LinkedList[nextPrim... 阅读全文
posted @ 2017-09-28 20:13 竹马今安在 阅读(286) 评论(0) 推荐(0)
摘要:import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.NoSuchElementException; public class MyLinkedList implements Iterable { //头结点 Node beginMarker;... 阅读全文
posted @ 2017-09-26 15:39 竹马今安在 阅读(433) 评论(0) 推荐(0)
摘要:import java.util.Iterator; import java.util.NoSuchElementException; public class MyArrayList implements Iterable { //默认数组大小 private static final int DEFAULT_CAPACITY=10; //表大小 pri... 阅读全文
posted @ 2017-09-25 16:04 竹马今安在 阅读(441) 评论(0) 推荐(0)
摘要:树是n(n>0)个结点的有限集合(换句话说,树是由节点组成的)。当n=0时称为空树。在任一非空树中:①有且仅有一个称为该树之根的节点;②除根结点之外的其余节点可分为有限个互不相干的集合,且其中每一个集合本身又是一棵树,称为根的子树。这是一个递归定义,即在树的定义中又用到了树。树的定义显示了树的特性, 阅读全文
posted @ 2017-09-23 19:24 竹马今安在 阅读(2723) 评论(0) 推荐(0)
摘要:AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. 阅读全文
posted @ 2017-09-19 20:45 竹马今安在 阅读(341) 评论(0) 推荐(0)