`
xinzhengjie
  • 浏览: 15731 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JAVA,HashSet面试题

    博客分类:
  • JAVA
阅读更多
一、请说说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是工具类,提供了关于集合的常用操作,例如,排序、二分法查找、反转元素等
6
13
分享到:
评论
3 楼 leonayx123 2012-08-06  
daiyf_cd 写道
楼上说反了吧,hashmapde key 结合是一个hashset


啥意思。没看懂。 hashmap的key 怎么结合?

hashset确实是存在hashmap里。为了响应你的质疑我又去看了一眼源码。添加在hashset里的值 其实是存放在里这个hashset内部的hashp里。当做hashmap的key存放。
  private transient HashMap<E,Object> map;

。。。。
 public HashSet() {
	map = new HashMap<E,Object>();
    }


至于hashmap的key。好像没有做特别存储。他只是用hash算法计算出hash值,其实就是为了计算对象数据entry的下标。

 public V get(Object key) {
        Object k = maskNull(key);
        int hash = hash(k);
        int i = indexFor(hash, table.length);
        Entry<K,V> e = table[i]; 
        while (true) {
            if (e == null)
                return null;
            if (e.hash == hash && eq(k, e.key)) 
                return e.value;
            e = e.next;
        }
    }
2 楼 daiyf_cd 2012-08-06  
楼上说反了吧,hashmapde key 结合是一个hashset
1 楼 leonayx123 2012-07-26  
hashset 本质其实就是一个hashmap。
是一个把 hashmap里的key 用来存放 hashset里的具体值的。
然后value部分放的一个统一的Object对象。

相关推荐

    java经典面试题

    ### Java经典面试题知识点 #### Java数据结构容器 - **核心知识点**:Java集合框架,包括List、Set、Map等接口及其实现类。List接口代表有序的集合,例如ArrayList和LinkedList;Set接口代表不允许重复元素的集合,...

    java中级面试题(自己汇总)

    本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...

    java面试题,java框架面试题

    Java 面试题、Java 框架面试题 Java 面试题是 Java 开发人员面试的必备知识,涵盖了 Java 基础知识、Java 框架、Java 集合框架、Java 多线程、Java 网络编程等方面的知识点。在本文中,我们将对 Java 面试题进行...

    Java面试题合集最新版2024.zip

    集合框架:熟悉Java集合框架中的List、Set、Map等接口及其实现类,如ArrayList、HashSet、HashMap等。 泛型:理解泛型的概念及其在Java中的应用,如泛型类和泛型方法。 并发编程:了解Java中的线程、同步、锁等机制...

    2017java面试题

    "2017java面试题"这个压缩包文件提供了丰富的资源,帮助Java开发者准备面试,深化对Java开发的理解。 文档"Java面试宝典2017.doc"可能包含了以下核心Java知识点: 1. **基础语法**:这包括变量、数据类型、运算符...

    【电子版】Java校招面试题库(附答案与解析)java篇.zip

    本资料“【电子版】Java校招面试题库(附答案与解析)java篇.zip”提供了一套完整的Java面试题集,帮助应聘者更好地准备面试。 1. **Java基础知识** - 类与对象:理解面向对象编程的基本概念,如封装、继承、多态...

    java综合面试题 java综合面试题

    在Java综合面试中,面试官通常会考察应聘者的语法基础、面向对象编程理解、内存管理、多线程、集合框架、IO流、网络编程、异常处理、JVM原理、设计模式以及数据库操作等多方面技能。以下是对这些知识点的详细说明: ...

    2020 java经典面试题总汇.zip

    在2020年,Java依然在企业级应用、云计算、大数据、Android开发等领域占据主导地位,因此Java面试题的汇总对于求职者来说至关重要。这份"2020 Java经典面试题总汇"很可能包含了各种难度层次的问题,旨在测试候选人在...

    Java面试题2022

    3. **集合框架**:Java集合框架包括List、Set、Queue、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。面试时可能会涉及它们的区别、使用场景以及性能分析。 4. **多线程**:Java提供强大的多...

    最全java面试题及答案(208道).pdf

    "Java面试题及答案详解" Java是目前最流行的编程语言之一,在软件开发行业中广泛应用。以下是Java面试题及答案的详解: Java基础 1. JDK 和 JRE 的区别是什么? JDK(Java Development Kit)是Java开发工具包,...

    120个Java经典面试题和答案

    Java作为一门广泛使用的编程语言,其面试题涵盖了基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、JVM优化、设计模式等多个领域。以下是一些基于标题和描述中提到的Java经典面试题及对应的知识点...

    Java面试题和练习题

    本文将基于标题“Java面试题和练习题”以及描述中提到的内容,深入探讨Java相关的面试题和练习题,旨在帮助求职者或希望提升技能的开发者巩固知识,准备面试。 一、Java基础 1. Java的数据类型:了解Java的八种...

    java面试题总结资料

    这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...

    2024年Java基础面试题,附带详细解析答案

    ### 2024年Java基础面试题及解析 #### 1. 什么是 Java? **答案解析:** Java 是一种广泛使用的高级编程语言,由 Sun Microsystems 在 1995 年开发并发布。它的主要特点包括面向对象、平台独立性、安全性、可移植...

    传智播客Java就业面试题大全20100801修订版

    3. **集合框架**:Java集合框架包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,理解它们的特点和使用场景。 4. **IO与NIO**:熟悉输入输出流体系,包括字节流、字符流、缓冲流、...

    java面试试题 Java工程师面试试题

    Java工程师的面试通常涵盖广泛的领域,包括基础知识、编程能力、并发处理、内存管理、设计模式、框架应用等。以下是一些可能出现在Java面试中的关键知识点: 1. **Java基础**:面试通常会从Java的基础语法开始,如...

    交通银行Java专业面试题

    【交通银行Java专业面试题解析】 在准备交通银行的Java专业面试时,了解常见的Java编程概念和技术至关重要。交通银行作为一家国际知名的金融机构,其技术面试通常会涵盖Java的基础知识、面向对象编程、并发处理、...

    java面试八股文各类面试题

    在准备Java面试时,了解和掌握一系列核心知识点是至关重要的。以下是一些基于标题和描述中的关键...阅读提供的PDF资料,如"Java并发编程面试题八股文.pdf"和"Spring面试题八股文.pdf",将有助于巩固和扩展这些知识。

    2021年Java大厂面试题整理大全

    "2021年Java大厂面试题整理大全"是一个集合了众多Java专业面试问题的资源,旨在帮助求职者准备Java相关的职位面试。这个压缩包可能包含了大量的面试题目、解答以及一些关键知识点的总结,涵盖从基础到高级的各个方面...

    java程序员面试面试题

    Java程序员在面试中可能会遇到各种各样的问题,涵盖了语言基础、数据结构、并发编程等多个方面。下面我们将深入探讨这些知识点。 首先,对于Java语法规范,这是每个Java开发者的基础。这包括但不限于变量声明、数据...

Global site tag (gtag.js) - Google Analytics