Java: как мне создать массив кортежей - PullRequest
3 голосов
/ 02 мая 2010

как я могу создать массив кортежей в jsp (java) лайк (а: 1, б: 2) (с: 3, д: 4) ... ...

Ответы [ 6 ]

4 голосов
/ 02 мая 2010

Создайте класс кортежа, что-то вроде:

class Tuple {
    private Object[] data;
    public Tuple (Object.. members) { this.data = members; }
    public void get(int index) { return data[index]; }
    public int getSize() { ... }
}

Затем просто создайте массив экземпляров Tuple.

2 голосов
/ 03 мая 2010

если вам нужен кортеж произвольного размера, стиль perl hash, используйте Map<K,V> (если у вас фиксированный тип значений ключей - ваш пример выглядит так, как будто Map<Character,Integer> будет работать - в противном случае используйте необработанный тип). Посмотрите коллекции java для более подробной информации о различных реализациях.

Учитывая эти кортежи, если вы хотите вставить их в последовательную коллекцию, я бы использовал List (снова, посмотрите библиотеку коллекций).

Итак, в итоге вы получите

List<Map<K,V>> listOfTuples

если вам нужно что-то более конкретное (например, у вас всегда будет x1, x2, x3 в вашем кортеже), рассмотрите возможность сделать карты EnumMap s - вы можете ограничить, какие ключи у вас есть, и если вы указываете по умолчанию (или какое-либо другое ограничение при создании), гарантирующее, что что-то получится.

1 голос
/ 02 мая 2010

вы можете использовать класс HashSet.

1 голос
/ 02 мая 2010

В Java нет стандартного класса pair / n-tuple; вам придется свернуть свой собственный.

0 голосов
/ 29 октября 2016

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

Проверьте здесь , чтобы увидеть документацию о точках.

0 голосов
/ 02 мая 2010

Если вы имеете дело с кортежами фиксированного размера, с фиксированными именами атрибутов, определите собственный простой класс данных, а затем определите массив этого класса.

Если, с другой стороны, вы хотите, чтобы имена атрибутов были гибкими и определялись во время выполнения, используйте структуру Map. В приведенном выше примере кажется, что HashMap может сделать эту работу. Вы можете захотеть обернуть его, чтобы уменьшить его функциональность, а также, возможно, добавить более конкретную функциональность.

...