我认为在某些情况下,在Java中将String和Integer存储在同一数组中会更有效,但是我知道Java是强类型的。
有没有办法做到?如果没有,我该怎么办?
答案 0 :(得分:2)
您可以使用y
来执行此操作。但是请不要。如果您觉得需要在一个数组中混合使用不同的类型,也许是时候重新考虑您的设计了(这是一个想法:将Object[]
s转换为String
s甚至是Integer
s在存储它们之前)。将这样不同的数据类型存储在同一数组中根本不是“正确”。
答案 1 :(得分:0)
定义“更高效”通常意味着更少的存储空间或更少的处理器强度。这些是截然相反的目标。挑战在于如何平衡它们。
您可以使用前面所述的Object[]
类型,但这需要确定类型,然后在使用之前将每个元素强制转换为String
或Int
。
装箱(转换为Object
类型)和拆箱(转换为原始类型)是
Java中相对昂贵的操作。
可能的解决方案(如果必须 必须使用相同的数组索引存储)
如果不需要对int
项进行进一步的数学处理,请使用.toString()
方法将其转换为String
并将其存储在以下数组中String
个。
如果Integer元素的数量远少于String
,请使用.toString()
方法将其转换为String
并将其存储在一个数组中String
个。然后使用int
解析出Integer.parseInt()
。(parseInt()
被认为是缓慢的操作)
如果不关心内存,请制作两个大小相同的独立数组,其中一个类型为String
,另一个类型为int
。选择一个作为主要用户(填充最多)。使用标志值(String
使用“”“,Integer.MIN_VALUE
使用int
)表示结果是另一种类型,应使用存储在另一数组中的值。这样可以保留公用索引,但要消耗更多的内存。
如果可能的话,我建议重写代码以使用两个单独的数组。