在Java中,是否有“正确的”方式将String和Integer存储在同一数组中?

时间:2019-02-18 21:46:42

标签: java arrays typed-arrays

我认为在某些情况下,在Java中将String和Integer存储在同一数组中会更有效,但是我知道Java是强类型的。

有没有办法做到?如果没有,我该怎么办?

2 个答案:

答案 0 :(得分:2)

您可以使用y来执行此操作。但是请不要。如果您觉得需要在一个数组中混合使用不同的类型,也许是时候重新考虑您的设计了(这是一个想法:将Object[] s转换为String s甚至是Integer s在存储它们之前)。将这样不同的数据类型存储在同一数组中根本不是“正确”。

答案 1 :(得分:0)

定义“更高效”通常意味着更少的存储空间或更少的处理器强度。这些是截然相反的目标。挑战在于如何平衡它们。

您可以使用前面所述的Object[]类型,但这需要确定类型,然后在使用之前将每个元素强制转换为StringInt

装箱(转换为Object类型)和拆箱(转换为原始类型)是 Java中相对昂贵的操作。

可能的解决方案(如果必须 必须使用相同的数组索引存储)

  • 如果不需要对int项进行进一步的数学处理,请使用.toString()方法将其转换为String并将其存储在以下数组中String个。

  • 如果Integer元素的数量远少于String,请使用.toString()方法将其转换为String并将其存储在一个数组中String个。然后使用int解析出Integer.parseInt()。(parseInt()被认为是缓慢的操作)

  • 如果不关心内存,请制作两个大小相同的独立数组,其中一个类型为String,另一个类型为int。选择一个作为主要用户(填充最多)。使用标志值(String使用“”“,Integer.MIN_VALUE使用int)表示结果是另一种类型,应使用存储在另一数组中的值。这样可以保留公用索引,但要消耗更多的内存。

如果可能的话,我建议重写代码以使用两个单独的数组。