[英]Java 2D mixed array of enum and String
我有一个枚举类,如下所示:
public enum ProductCategory {
ELECTRONICS,
ACCESSORIES,
GROCERY,
CLOTHING,
HOMELIVING
}
我想实现一个二维混合数组,该数组还存储混合数据类型String
和enum
:
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.