0 0

一道Java基础题,来个牛人0

package com.huawei.test;

import java.util.HashMap;

public class HashTest {
	public static void main(String[] args) {
		getSize1();
		getSize2();
	}
	
	public static void getSize1(){
		HashMap<Object, String> instance = new HashMap<Object, String>();
		instance.put(new String(), "xx");
		instance.put(new String(), "xx");
		System.out.println(instance.size());
	}
	
	public static void getSize2(){
		HashMap<Object, String> instance = new HashMap<Object, String>();
		instance.put(new HashObject(), "xx");
		instance.put(new HashObject(), "xx");
		System.out.println(instance.size());
	}
	
	private static class HashObject{

	}
}


求打印结果是多少____和____?
2013年2月07日 15:29

4个答案 按时间排序 按投票排序

0 0

采纳的答案

1,2

两个String是同一对象,它们的hashcode一样
两个HashObject是两个不同对象,没重写hashcode,equals方法没重写

2013年2月07日 15:57
0 0

public V put(K key, V value) {
        if (key == null)
            return putForNullKey(value);
        int hash = hash(key.hashCode());
        int i = indexFor(hash, table.length);
        for (Entry<K,V> e = table[i]; e != null; e = e.next) {
            Object k;
            if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
                V oldValue = e.value;
                e.value = value;
                e.recordAccess(this);
                return oldValue;
            }
        }

        modCount++;
        addEntry(hash, key, value, i);
        return null;
    }
好好瞅瞅源码,到底比较的是什么,,两个new出来的String 对象绝对不是同一个对象,它们放在堆里面。String类重写了hashcode,equals方法。

2013年2月21日 18:17
0 0

public V put(K key, V value) {
        if (key == null)
            return putForNullKey(value);
        int hash = hash(key.hashCode());
        int i = indexFor(hash, table.length);
        for (Entry<K,V> e = table[i]; e != null; e = e.next) {
            Object k;
            if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
                V oldValue = e.value;
                e.value = value;
                e.recordAccess(this);
                return oldValue;
            }
        }

        modCount++;
        addEntry(hash, key, value, i);
        return null;
    }

2013年2月21日 18:13
0 0

没试验过,先答,第一个答案是1,第二个答案是2.
理由如下:
new String(),这一块应该是内部已经有一致性的判定了。
new HashObject(),这一块由于作者可能没有对一致性判定,所以会采用默认的方式来返回,两个hashObject放进去,肯定是不同的。

2013年2月08日 15:59

相关推荐

    黑马程序员java基础试题、笔记

    总的来说,这个压缩包提供了全面的Java学习资源,不仅覆盖了基础理论,还涉及到实践应用,特别是针对面试的准备,对提升Java编程技能和成功进入IT行业具有很高的价值。对于想要深入学习Java的朋友们来说,这是一个...

    java 面试题 牛人的

    Java面试题涵盖了许多核心概念,这里我们逐一详细讨论: 1. **异常处理**:Java的异常处理机制基于`try-catch-finally`块。当程序出现异常时,JVM会生成一个异常对象并沿调用栈查找合适的`catch`块进行处理。异常类...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...

    java基础练习题(基础)精选

    Java基础练习题由本人整理并上传,非常适合于初学者加强巩固自己的知识,编程学好的唯一途径就是多练习。

    JAVA编程题全集(100题及答案)——直接打印

    本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的题目和经典的解法,非常适合刷学完基础、刷题前的知识总结与开拓。以下是从资源中提取的重要知识点: 1. JAVA 基础知识:资源中提到了 JAVA 程序设计总复习题...

    java基础练习题 (目前到集合内含三个小综合案例)

    这份"java基础练习题(目前到集合内含三个小综合案例)"涵盖了Java的基础知识,旨在帮助学习者巩固并提升Java编程技能。从JDK(Java Development Kit)入门到集合框架的学习,这是一个全面了解和实践Java编程的重要...

    java基础一整套练习题

    java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一整套练习题 java基础一...

    java面试题java面试题java面试题

    java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...

    java面试题及答案(基础题122道,代码题19道).doc

    在Java编程语言中,面试题通常涵盖了许多核心概念和技术,以评估候选人的理解和技能水平。以下是一些基于给定文件的Java基础知识和重要知识点的详细解释: 1. **面向对象的特征** - **抽象**:抽象是面向对象编程...

    Java算法集题大全.zip

    Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法...

    200道java基础题及答案终极版.pdf

    在Java编程语言中,JDK和JRE是两个非常重要的概念,而了解它们的区别是每个Java开发者的基础知识之一。JDK(Java Development Kit)是Java开发工具包,包含了Java运行环境(JRE),编译器(javac),以及其他调试和...

    java面试题集锦 java面试题集锦

    这些面试题通常用于测试开发者对Java基础知识的掌握程度。理解JDK与JRE的区别可以帮助开发者理解开发环境和运行环境的不同需求,而`==`和`equals`的使用则涉及到对Java内存模型的理解,这是编写正确、健壮的Java代码...

    Java基础面试题 91道.pdf

    在Java编程领域,面试题是评估求职者技术能力的重要手段。以下是一些关键知识点的详细解释: 1. **编程**:编程是使用特定的编程语言,为了解决特定问题,编写程序代码的过程。它涉及到将人类的逻辑思维转化为...

    Java基础面试题

    对于想要在Java开发领域深入发展或者寻求相关职位的人来说,掌握扎实的Java基础知识至关重要。以下是一些常见的Java基础面试题及其详细解答: 1. **Java是什么?** Java是一种面向对象的、跨平台的编程语言,由Sun...

    关于java基础面试题0基础!!易懂!!!.html

    java基础面试题0基础!!易懂!!java基础面试题0基础!!易懂!!java基础面试题0基础!!易懂!!java基础面试题0基础!!易懂!!java基础面试题0基础!!易懂!!java基础面试题0基础!!易懂!!java基础面试题...

    java 面试题400多道java基础面试题

    java 面试题400多道java基础面试题

    java基础题总结

    java学习基础题,全是最基本的java语句,连带答案的选择题。

    java基础题-百马百担问题

    在这个问题中,我们需要使用Java来设计一个解决方案,以体现Java语言的基础特性以及对数据结构和算法的理解。 问题背景:假设有一百匹马和一百担货物,每匹马可以负担一担货物,但并非所有马都能负重,部分马可能...

Global site tag (gtag.js) - Google Analytics