• JAVA,HashSet面试题
    时间:2012-08-05   作者:佚名   出处:互联网

    本文列举java面试题中关于HashSet的一些知识点

    一、请说说ArrayList、Vector和LinkedList的区别

    这三者都是单列集合Collection下List集合的实现类,所以他们的共同点,元素有序,允许重复元素
    不同点:
    ArrayList和Vector底层都是数组实现,这样的实现注定查找快、增删慢
    ArrayList和Vector的区别在于线程安全问题,Vector支持线程同步,是线程访问安全的,而ArrayList线程不安全
    LinkedList底层是链表结构,查找元素慢、增删元素速度快,线程不安全。

    二、请说说HashSet原理,并写程序证明

    HashSet在存元素时,会调用对象的hashCode方法计算出存储位置,然后和该位置上所有的元素进行equals比较,
    如果该位置没有其他元素或者比较的结果都为false就存进去,否则就不存。
    这样的原理注定了元素是按照哈希值来找存储位置,所有无序,而且可以保证无重复元素
    我们在往HashSet集合存储元素时,对象应该正确重写Object类的hashCode和equals方法
    正因为这样的原理,HashSet集合是非常高效的。
    比如,要查找集合中是否包含某个对象,首先计算对象的hashCode,折算出位置号,到该位置上去找就可以了,而不用和所有的元素都比较一遍

    三、Collection和Collections的区别

    两者没有任何关系
    Collection是单列集合的父接口,JDK1.5中定义了Iterable接口作为Collection父类,为了实现增强for循环
    Collections是工具类,提供了关于集合的常用操作,例如,排序、二分法查找、反转元素等

    网友留言/评论

    我要留言/评论

    相关文章

    开源混淆工具ProGuard配置详解及配置实例:ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.
    在代码重构中蜕变:这几天,要对我半年前写的代码进行一些整理工作,在看代码时发现当时有很多地方写得不够好,俗称的有“坏味道”,呵呵,重构,必须的。
    搞懂java中的synchronized关键字:实际上,我关于java的基础知识的90%以上都来自Thinking in Java。对于其中的synchronized关键字,当时就是浏览一下,大概知道意思,也没有细看。后来一直没有用过这个关键字。昨天看Thinking in Patterns with Java中的Observer模式,看了其中的Observable类的源码,发现里面几乎所有的方法都用了synchronized关键字(不是全部),其中个别用了synchronized(this){}的区块。于是,我发觉有必要好好理解一下这个关键字了。
    JAVA中synchronized与static synchronized 的区别:通过分析这两个关键字的分析,我们可以理解java中锁的概念。一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized(或者是锁在该类的class或者classloader对象上)。
    建造者模式(Builder)举例介绍:Builder模式的定义是:将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 首先它意图是要构建一个复杂的对像,而这个复杂的对像往往需要由好几个子对像或分步聚来完成最终的这个对象的构建,而这个复杂对象的子对像经常需要不断的变化,但它的构建过程是相对是稳定的。
    有关Android Activity生命周期详解:生命周期,对于初学者来讲可能比较深奥。在各种面试中,常常会被问到xxx的生命周期是什么样子的,比如:Servlet的生命周期,Spring Bean的生命周期。今天就详细的讲解一下Android Activity 的生命周期。文章主要涉及到如下几个部分:生命周期图,测试代码,结果分析。
    使用Java进行冒泡排序(冒泡排序示例):冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
    Java面试题中关于HashMap的小小总结:面试过程中往往会被问关于HashMap的问题,比如:说说Hashpmap的原理,HashMap怎样保证key的唯一性。下面小编给大家简单介绍一下关于HashMap的小小总结。
    JAVA正则表达式:Pattern类与Matcher类详解:java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
    线上解决Resin服务响应过慢的几个方法:最近Web服务访问量过大,由于服务器配置比较差,数量也较少,导致服务响应过慢。为了优化服务和提高响应,下面总结出几条查询Resin问题的方法。