Int и Double в одном массиве в Java - PullRequest
2 голосов
/ 12 сентября 2010

Есть ли способ поместить int и Double в один и тот же массив. Я хочу иметь массив (p1[]), где первый (p1[0]) - это int, а все остальные элементы - double. Это возможно?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2010

Вы можете сделать это, имея массив объектов, которые являются суперклассами Integer / Double (как указано в другом месте).

Однако я бы, возможно, обеспечил безопасность типов, реализовав объект, имеющий компонент Integer плюс массив Double s, и сохранил бы их массив. Преимущество (несмотря на дополнительную сложность) состоит в том, что вы будете иметь безопасность типов и вам не придется приводить первый элемент к Integer, а остаток к Double s.

2 голосов
/ 12 сентября 2010

Вы можете иметь массив Object s, в этом случае вы можете поместить в него объекты Integer и Double. Однако я сомневаюсь, что может быть лучший способ хранить ваши данные, чем массив.

РЕДАКТИРОВАТЬ: Конечно, вы должны сделать его массивом Number, как предложил Никита.

1 голос
/ 12 сентября 2010

Если память очень важна, вы можете использовать вместо нее long []. Вы можете легко хранить «int», но «double» требует больше работы:

long x = Double.doubleToRawLongBits(double value); 
double value = Double.longBitsToDouble(long x). 

Но, может быть, лучше создать специальный класс, а затем сместить индекс массива:

class Y {
    int x;
    double[] values;
}
...