君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

随笔分类 -  数据结构与算法

上一页 1 2 3

摘要:散列计算就是计算元素应该放在数组的哪个元素里。准确的说是放到哪个链表里面。按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值。比如String类就有如下方法:[java]view plaincopyprint?publicinthashCode(){inth=hash;intlen=count;if(h==0&&len>0){intoff=offset;charval[]=value;for(inti=0;i<len;i++){h=31*h+val[off++];}hash=h;}returnh;} 阅读全文
posted @ 2013-06-06 05:34 刺猬的温驯 阅读(265) 评论(0) 推荐(0)

摘要:Java的HashMap非常的常用,本篇研究它的实现算法,最后希望计算出内存占用,性能的量化数据,然后得出什么时候使用HashMap,什么时候不能滥用的结论。HashMap实际上是一个数组,数组里面的每个元素都是一个链表。每个元素在通过put方法放入HashMap中的时候,要按照如下步骤进行:1.根据该元素自身提供的hashcode计算出散列值,该散列值就是数组的下标2.将新元素放入该数组位置的链表中先来看一下数组的定义:[java]view plaincopyprint?/***Thetable,resizedasnecessary.LengthMUSTAlwaysbeapoweroftwo 阅读全文
posted @ 2013-06-06 05:30 刺猬的温驯 阅读(236) 评论(0) 推荐(0)

摘要:Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构。Java集合框架的基本接口/类层次结构:java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +--java.util.LinkedList [C] +--java.util.Vector [C] +--java.util.Stack [C]+--java.util.Set [I] +--java.util.HashSet [C] +--java.util.SortedSet [ 阅读全文
posted @ 2013-06-06 05:10 刺猬的温驯 阅读(318) 评论(0) 推荐(0)

摘要:Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 所有实现Collection.. 阅读全文
posted @ 2013-06-06 04:56 刺猬的温驯 阅读(1175) 评论(0) 推荐(0)

摘要:集合交集在数学上面的定义是:A和B的交集写作 "A∩B"。 形式上:x属于A∩B当且仅当x属于A,且x属于B。在Java集合类List里面也提供了一个内置的方法,求两个List集合的交集。方法如下:public boolean retainAll(Collection<?> c)子类必须实现该方法。下面是以子类ArrayList为例的一段代码:view sourceprint?01publicclassListDemo {0203/**04* @param args05*/06publicstaticvoidmain(String[] args) {07List 阅读全文
posted @ 2013-06-06 04:52 刺猬的温驯 阅读(7679) 评论(0) 推荐(0)

摘要:List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。1、List接口和ListIterator接口 List作为Collection接口的子接口,可以使用Collection接口里的全部方法。List是有序集合,所以List集合里增加了一些根据索引来操作集合元素的方法:void add(int index, Object element):将元素element插入在List集合的index处。boolean addAll(int index, Collection c):将集合c所包含的所有元素都插入在List集 阅读全文
posted @ 2013-06-06 04:49 刺猬的温驯 阅读(227) 评论(0) 推荐(0)

摘要:TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。1、自然排序TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提:两个对象的类型相同)。 java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。当一个对象调用该方法与另一个对象进行比较,例如obj1.comparTo(obj2),如果该方法返回0,则表明这两个对 阅读全文
posted @ 2013-06-06 04:41 刺猬的温驯 阅读(356) 评论(0) 推荐(0)

摘要:1、Set接口的使用Set集合里多个对象之间没有明显的顺序。具体详细方法请参考API文档(可见身边随时带上API文档有多重要),基本与Collection方法相同。只是行为不同(Set不允许包含重复元素)。 Set集合不允许重复元素,是因为Set判断两个对象相同不是使用==运算符,而是根据equals方法。即两个对象用equals方法比较返回true,Set就不能接受两个对象。01publicclassTestSet02{03publicstaticvoidmain(String[] args)04{05Set<String> books =newHashSet<String 阅读全文
posted @ 2013-06-06 04:14 刺猬的温驯 阅读(236) 评论(0) 推荐(0)

摘要:说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。1、综述所有集合类都位于java.util包下。集合中只能保存对象(保存对象的引用变量)。(数组既可以保存基本类型的数据也可以保存对象)。当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型(参见具体泛型的内容)。 Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口 阅读全文
posted @ 2013-06-06 04:09 刺猬的温驯 阅读(229) 评论(0) 推荐(0)

摘要:翻译自:The Collection Interface一个集合表示一组对象。Collection接口被用来传递对象的集合,具有最强的通用性。例如,默认所有的集合实现都有一个构造器带有一个Collection类型参数。这个构造器被称作转换构造器,用指定集合的元素来初始化新集合,而不管指定集合实现的是哪个集合接口和实现类型。换句话说,这个构造器使得我们可以转化集合的类型(比如List到Set,Set到List)。设想一下,假如你有一个Collection<String> c,它可能是一个List,也可能是一个Set,或者其他类型的Collection。按照上面的方法可以这样初始化一个 阅读全文
posted @ 2013-06-06 03:33 刺猬的温驯 阅读(201) 评论(0) 推荐(0)

摘要:翻译自:The Set Interface一个Set是一个不能包含重复元素的集合。它映射了数学意义上的集合抽象。Set接口只是在继承自Collecton接口的方法基础之上加上不允许元素重复的限制。Set也对equals和hashCode的行为规约施加了更强的限制,使得Set实例允许进行有意义的比较,即使他们的具体实现不同。两个集合实例相等(equal)如果它们包含相同的元素。一个Set是一个不能包含重复元素的集合。它映射了数学意义上的集合抽象。Set接口只是在继承自Collecton接口的方法基础之上加上不允许元素重复的限制。Set也对equals和hashCode的行为规约施加了更强的限制, 阅读全文
posted @ 2013-06-06 03:33 刺猬的温驯 阅读(227) 评论(0) 推荐(0)

摘要:翻译自:http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html核心集合接口封装了不同类型的集合,如下图所示。这些接口使得我们可以操作集合而不必关心它们的具体实现细节。核心集合接口是Java集合框架的基础。正如我们可以从下图看到的,核心集合接口形成了层次结构:Set是一种特殊的集合,而一个SortedSet是一种特殊的Set,以此类推。注意上图的层次结构中包含两棵独立的树 —Map不是一个真正意义上的集合。注意所有的核心集合接口都是泛型化的(generic)。例如下面是Collection接口的声明:pub 阅读全文
posted @ 2013-06-06 03:32 刺猬的温驯 阅读(239) 评论(0) 推荐(0)

摘要:翻译自:http://docs.oracle.com/javase/tutorial/collections/intro/index.html一个集合,即collection,有时也被称为一个容器,只是将多个元素聚集成一个单元。Collections常被用来存储、检索、操纵聚集数据以及聚集数据间的通信。一般来说,Collections表示一组形成自然集合的数据项,比如一手扑克牌、一个信箱(由很多信组成)或者电话簿。 如果你熟悉Java语言或者任何一门其他编程语言,你可能已经对Collections比较熟悉了。Java 1.2之前的集合实现,包括Vector、Hashtable和array,但是 阅读全文
posted @ 2013-06-06 03:27 刺猬的温驯 阅读(252) 评论(0) 推荐(0)

摘要:转载http://blog.csdn.net/beiyetengqing/article/details/7856113关注Trie 这种结构已经很久,Trie有一个很有趣的用途,那就是自动提示。而且,前不久在一次面试里,也需要用Trie来解答。所以,在此对这个数据结构进行总结。Trie,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符 阅读全文
posted @ 2012-09-24 17:50 刺猬的温驯 阅读(1445) 评论(0) 推荐(0)

摘要://Copyright2007Christiand'Heureuse,InventecInformatikAG,Zurich,Switzerland//www.source-code.biz,www.inventec.ch/chdh////Thismoduleismulti-licensedandmaybeusedundertheterms//ofanyofthefollowinglicenses:////EPL,EclipsePublicLicense,V1.0orlater,http://www.eclipse.org/legal//LGPL,GNULesserGeneralPub 阅读全文
posted @ 2012-08-02 21:51 刺猬的温驯 阅读(446) 评论(0) 推荐(0)

摘要:摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题... 阅读全文
posted @ 2012-06-29 09:30 刺猬的温驯 阅读(286) 评论(0) 推荐(0)

摘要:1.java集合框架(Java Colletion Framework):可以理解为用来在内存中存放一组对象的某种容器,就像之前的数组和自定义队列。2.java中的集合框架是线性的数据结构,但是这些线性的数据结构分为两类:物理线性,逻辑线性。3.java集合类主要在java.util.*包下,主要有一下几类: 1.List:有序的集合类(某种特定的顺序) 2.Set:是无序并且不重复数据的集合类 3.Map:键值对的集合类例如:学号--->学生 身份证号---->人 4.Queue4.List、Set和Map都是接口(Interface),不是具体的类实现。List lst = n 阅读全文
posted @ 2012-04-15 01:12 刺猬的温驯 阅读(298) 评论(0) 推荐(0)

摘要:线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相. 阅读全文
posted @ 2012-03-16 05:00 刺猬的温驯 阅读(1268) 评论(0) 推荐(0)

摘要:前言数据压缩技术始终是让我感觉到比较神秘的数学算法之一,而当我接触到其具体的算法时候,发现其原理是如此的简单,所以就写了这篇文件来谈谈自己的感想。但由于本文篇幅有限,就以只以一个最简单的LZ77算法作为例子来讲解。数据压缩技术其应用十分普遍,WinRar,WinZip等常规数据压缩软件已经成为现在电... 阅读全文
posted @ 2012-01-21 16:33 刺猬的温驯 阅读(2190) 评论(0) 推荐(0)

上一页 1 2 3