繁体   English   中英

Java 2D枚举和字符串混合数组

[英]Java 2D mixed array of enum and String

我有一个枚举类,如下所示:

public enum ProductCategory {
    ELECTRONICS,
    ACCESSORIES,
    GROCERY,
    CLOTHING,
    HOMELIVING
}

我想实现一个二维混合数组,该数组还存储混合数据类型Stringenum

Object[][] ProductList2 = {
    {"Smartwatch", ProductCategory.ACCESSORIES},
    {"Powerbank", ProductCategory.ELECTRONICS},
    {"Vacuum cleaner", ProductCategory.HOMELIVING}
};

第一column将存储String数据类型,而第二column将存储enum数据类型。 但是,如果我运行以下代码:

ProductList[i][1].getClass();

该代码返回所存储值的数据类型为class java.lang.String类型。 如何按原样存储enum 谢谢!

首先,您的代码按预期返回ProductCategory。 当写入ProductList2 [i] [0]而不是ProductList2 [i] [1]时,将返回java.lang.String。

您想要一个包含String-ProductCategory对的集合,以借助键来标识元素(在此示例中,键可以是String类型)。 为此,不建议使用对象数组。 原因是您可以在该数组内存储任何类型的对象,例如String,ProductCategory,任何数组,甚至是实例对象本身。

因此,理想的替代选择是java.util.Map接口。 该接口具有以有效方式存储和检索键值对的功能。 这是让您入门的地图API。 https://docs.oracle.com/javase/7/docs/api/java/util/Map.html出于类似于您的目的而实现此接口的最常见的类是java.util.HashMap。 这个集合有很酷的功能。 您不能存储重复的键值。 如果您将String作为键类型,则尝试存储具有现有键的元素,则旧元素将被更新的元素替换。 引入了更多功能。 我建议您研究一下,并尝试使用此收藏集来完成任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM