метод asList в java.util.Arrays
позволяет хорошую комбинацию varargs, общих методов и автоупаковки:
List ints = Arrays.asList(1,2,3);
Я думаю, что ответ "не напрямую".
Вот некоторые из способов, как я думаю, вы могли бы достичь функциональности.
Использовать группы:
Для хранения данных можно использовать иерархию групп в виде Radix Tree. Однако это, вероятно, не слишком хорошо масштабируется.
Использовать наборы индексных данных:
HDF имеет тип ссылки, который может быть использован для связи с основной таблицей из отдельных индексных таблиц. После записи основных данных можно использовать другие наборы данных, отсортированные по другим ключам со ссылками. Например:
MainDataset (sorted on identifier)
0: { A, "C", 2 }
1: { B, "B", 1 }
2: { C, "A", 3 }
StringIndex
0: { "A", Reference ("MainDataset", 2) }
1: { "B", Reference ("MainDataset", 1) }
2: { "C", Reference ("MainDataset", 0) }
IntIndex
0: { 1, Reference ("MainDataset", 1) }
1: { 2, Reference ("MainDataset", 0) }
2: { 3, Reference ("MainDataset", 2) }
Для того, чтобы использовать вышеперечисленное, необходимо записать двоичный поиск при поиске по полю в индексных таблицах.
В памяти Index:
В зависимости от размера набора данных может быть так же просто использовать индекс в памяти, который читается/записывается в собственный набор данных, используя что-то вроде "boost::serialize".
HDF5-FastQuery:
Эта бумага (а также эта страница ) описывает использование растровых индексов для выполнения сложных запросов по набору данных HDF. Я не пробовал этого.
Что вы подразумеваете под идентификатором ? Если вы имеете в виду атрибут , проверьте в этом руководстве . В C:
status = H5Aread(attr_id, mem_type_id, buf);
status = H5Awrite(attr_id, mem_type_id, buf);