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工程师面试

    首先,Java基础题是每个面试者必须掌握的,这些题目通常涵盖以下几个方面: 1. **Java语法**:包括变量、数据类型、运算符、流程控制(如if-else、switch、for、while等)、类与对象、封装、继承、多态等基本概念。...

    Java基础知识笔试题及答案

    Java 基础知识笔试题及答案 Java 是一种广泛使用的编程语言,它具有强大的功能和灵活性。本资源汇总了 Java 基础知识笔试题及答案,涵盖了 Java 的基本概念、数据类型、运算符、控制结构、函数、数组、集合框架、...

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

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

    经典java基础面试题及答案大汇总.rar

    经典java基础面试题及答案大汇总.rar 经典java基础面试题及答案大汇总.rar 经典java基础面试题及答案大汇总.rar 经典java基础面试题及答案大汇总.rar 经典java基础面试题及答案大汇总.rar 经典java基础面试题及答案...

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

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

    Java算法集题大全.zip

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

    java 基础面试题

    很全面的java基础面试题,给我一个你最常见到的runtime exception abstract class和interface有什么区别

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

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

    java基础编程题

    java基础题,对初学者有很大的帮助。初学者可以根据自己学到的知识融合习题

    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基础题-百马百担问题

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

    Java面试题基础篇

    Java 面试题基础篇 Java 面试题基础篇是面向Java开发人员的一份详细的面试题库,涵盖了 Java 的基础知识点,包括面向对象编程、变量作用域、事件委托机制、垃圾回收机制、序列化、排序算法、继承、多态、内部类、...

    java基础知识详解 Java入门必看 Java面试题集锦

    这份资料集主要涵盖Java基础知识、初学者入门指南以及常见的Java面试题,旨在帮助学习者系统地理解和掌握Java的核心概念。 首先,Java基础知识是理解任何Java程序的基础。这包括: 1. **Java环境搭建**:学习如何...

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

    本文总结了Java面试题及答案,涵盖了Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、...

Global site tag (gtag.js) - Google Analytics