Java 我可以为此使用哪种数据类型?

Java 我可以为此使用哪种数据类型?,java,Java,在Java中。我想存储用户定义的对象和与其相关的整数。我应该使用哪种数据类型? 我尝试过HashMap,但显然它不能在没有equals()方法的情况下存储对象 我尝试过HashMap,但显然它无法存储没有HashMap的对象 equals()方法 更准确地说,如果不满足以下两个条件之一,就不能将对象用作贴图的关键点:- 重写等于和哈希代码,或 不覆盖任何一个 因此,您可以轻松地将对象用作键,而无需根据第二个条件使用equals方法 但是,如果希望基于新创建的对象找到密钥,最好遵循第一个条件。

在Java中。我想存储用户定义的对象和与其相关的整数。我应该使用哪种数据类型? 我尝试过HashMap,但显然它不能在没有equals()方法的情况下存储对象

我尝试过HashMap,但显然它无法存储没有HashMap的对象 equals()方法

更准确地说,如果不满足以下两个条件之一,就不能将对象用作贴图的关键点:-

  • 重写
    等于和
    哈希代码,或
  • 不覆盖任何一个
因此,您可以轻松地将对象用作键,而无需根据第二个条件使用equals方法


但是,如果希望基于新创建的对象找到密钥,最好遵循第一个条件。因为
方法的默认实现等于
方法比较对象的参考值,而不是内容本身

您应该坚持使用哈希映射。它适用于所有情况

下面是一些由用户定义的类

   public class UserDefinedObject(){
    }

下面是这个类与HashMap的用法

import java.util.HashMap; 
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        Map<UserDefinedObject, Integer> stuff = new HashMap<UserDefinedObject, Integer>();
        UserDefinedObject userDefinedObject = new UserDefinedObject();
        stuff.put(userDefinedObject, 1);
        System.out.println(stuff.get(userDefinedObject));
    } 
}
import java.util.HashMap;
导入java.util.Map;
公共班机{
公共静态void main(字符串[]args){
Map stuff=newhashmap();
UserDefinedObject UserDefinedObject=新的UserDefinedObject();
stuff.put(userDefinedObject,1);
System.out.println(stuff.get(userDefinedObject));
} 
}

好问题是:您必须如何处理这些对象和这个整数?基于给定对象快速查找整数?基于整数快速查找对象?遍历对象整数对?是否按关联整数对对象进行排序?
HashMap
绝对可以存储不覆盖equals/hashCode的对象。。。您将只获得参考身份行为。现在,您希望它的行为如何?为什么重写
equals
hashCode
是一个问题?您可以在不重写equals方法的情况下将对象放入hashmap中。显示您的代码?即使您重写equals或hashcode,它也会工作fine@rai.skumar.. 当然,就存储对象而言,它可以正常工作。但是你再也不会从地图上拿回你的钥匙了。假设我只是覆盖了equals。在这种情况下,2个相等的对象可能会散列到不同的位置,但您将能够在覆盖相等对象时恢复您的对象。@rai.skumar:如果将两个相等的对象散列到两个不同的位置,则会出现严重的错误。如果两个键相等,则HashMap不应包含这两个键。它应该只包含一个。如果重写equals,则必须重写hashCode。当然。您也可以通过抛出UnsupportedOperationException来实现每个方法,或者打破您实现的每个方法的文档约定,但是您不会构建任何有用的程序来实现。这不仅仅是一个坏习惯。这是一只虫子。