Android SparseArray<SparseArray <Object >> инициализация

Я должен реализовать классификацию чего-то вроде Hashmap с двумя ключами и значением, скажем, Hashmap<K1, K2, V>где два ключа являются целыми числами, а значение является общим MyObject, определенным мной.

Я прочитал это, это и это сообщение, и я также знаю, что проект guava предлагает интерфейс таблицы, но я не хочу использовать внешние библиотеки (если не строго необходимо), чтобы мой проект был как можно меньше. Поэтому я решил использовать SparseArrays: я подумал, что это лучший выбор, потому что мои ключи int и не обязательно начинаются с нуля и увеличиваются.

Я делаю это инициализация:

SparseArray<SparseArray<MyObject>> myObjectSparseArray = new SparseArray<SparseArray<MyObject>>();

Теперь давайте перейдем к делу. Могу ли я сделать такую ​​операцию:

MyObject myObject = new MyObject();
myObjectSparseArray.get(3).put(2,myObject);

или я должен сделать что-то вроде:

MyObject myObject = new MyObject();
myObjectSparseArray.put(3, new SparseArray<MyObject>());
myObjectSparseArray.get(3).put(2,myObject)

Другими словами: я инициализирую оба SparseArrays этой единственной строкой?

SparseArray<SparseArray<MyObject>> myObjectSparseArray = new SparseArray<SparseArray<MyObject>>() 

Как вы думаете, есть лучшие реализации для моего случая?

2 ответа

Если у вас есть два ключа и одно значение, я бы просто использовал обычный HashMap или же SparseArray и объединит эти два ключа в одно значение. Допустим, у вас есть один ключ, который String и тот, который Long поэтому ключ вашей карты будет:(strKey + longKey).hashCode(), Вы можете использовать его как Integer и сохранить его в SparseArray или как String и использовать HashMap,

Буксируя гнездо SparseArray против цели иметь SparseArray во-первых, так как вы будете выделять новый SparseArray для каждого уникального первого ключа в вашем key пар.

Хорошим решением для этого было бы использование hashmap и использование ключевого объекта, который принимает два значения типа int (например,Point), или определяемого вами объекта, который просто содержит два ключа.

Другие вопросы по тегам