Многомерный массив с разными типами в Java - PullRequest
2 голосов
/ 09 апреля 2010

Я хочу сохранить структуру данных, то есть таблицу с одним столбцом Strings и другим столбцом Ints.

List<Entry<String, Integer>> li = new LinkedList<Entry<String, Integer>>(); 

будет делать работу для списка, но я бы предпочел иметь производительность и нуждаться в памяти массива.

Я пытался

Entry<String, Integer>[]  = new Entry<String, Integer>[10];

но это не похоже на работу.

Является ли Entry правильным типом данных для использования?

Ответы [ 5 ]

3 голосов
/ 09 апреля 2010

Напишите класс, который представляет ваш кортеж, и используйте массив (или список) этого типа. Не отказывайся от занятий, они твои друзья!

А что именно вы подразумеваете под "производительностью массива"? Массивы не обязательно быстрее, чем реализации List.

Подумайте о вставке элемента в позицию 0: A LinkedList может сделать это в O (1). Чтобы получить тот же эффект в массиве, вам необходимо выполнить операцию O (n) (воссоздать массив и скопировать все существующие значения).

2 голосов
/ 09 апреля 2010

Если вам действительно нужен массив универсальных типов, вы можете сделать это:

Entry<String, Integer>[] array = new Entry[10];

Это дает вам предупреждение компиляции, хотя. Подробнее об этом можно прочитать здесь:

http://www.devarticles.com/c/a/Java/Wildcards-Arrays-and-Generics-in-Java/2/

1 голос
/ 09 апреля 2010

Используйте это,

List<Entry<String, Integer>> li = new ArrayList<Entry<String, Integer>>(); 
1 голос
/ 09 апреля 2010

Может быть, вы можете просто использовать ArrayList, не должно быть большой разницы в производительности по сравнению с простым массивом.

1 голос
/ 09 апреля 2010

Я не знаю, что не работает, но:

  1. Вы должны дать имя вашему массиву.
  2. вы не можете создавать массивы с универсальными типами
  3. не забудьте Entry это интерфейс.

Итак, это:

Entry<String, Integer>[] = new Entry<String, Integer>[10];

Должно быть так:

Entry<String, Integer>[] entries = new Entry[10];

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...