Вообще, у меня возникло подозрение что ты путаешь понятия хэщ-таблица и коллекция.
Это ты, по ходу что-то путаешь.. хэш-таблица относится к пространству имен System.Collections и чем же она по твоему является??? ничем другим, как разновидностью коллекции!!
И после этого ты будешь утверждать, что работать с Dictionary удобнее и этот метод будет якобы быстрее???
А где ты видел, чтоб я утверждал, что это будет работать быстрее? Я лишь говорил, что этот спрособ проще и удобнее!! Как мне кажется, ни одно из этих слов не означает быстрее..
каждое из которых позволяет якобы идентифицировать элемент
Не ЯКОБЫ... а позволяет идентифицировать элемент ОДНОЗНАЧНО!!! на это он и ключ!! И это его основная задача...
Перечитай вопрос.
Это тебе стоит перечитать топик, чтобы осознать простую вещь.. что я предложил человеку отказаться от геморроя с многомерными массива и предложил использовать хэш-таблицу.. и в моем варианте массив НЕ используется вообще! А отсюда вытекает следующее: Твой вопрос..
ну расскажи тогда как ты предлагаешь в твоем варианте изменять размер массива
))
да ладно те, Паш!! никто и не ругается..
Просто я не могу промолчать, когда тут юноша утвержает, что массив - это не объект, а хэш-таблица - это не коллекция!! И пытается при этом спорить совершенно не вникнив в суть разговора..
Способ с HashTable мне интуитивно не нравится... Почему? Громоздко
(структуру делать, потом она будет бокситься, анбокситься... жуть).
Почему еще - нет инфраструктуры, присущей нормальным массивам и
List'ам - например, получение кол-ва элементов, размерностей по разным
измерениям и т.п.
Я мог бы согласиться, что это является решением проблемы. Но стоп!
Проблема то никем и не заявлена. В чем проблема? Я так и не смог
понять, перечитав тред дважды. И соответственно не смог понять
полезность этого метода в данном аспекте.
Ведь ресайз-то тут невозможен, ибо сайза нету Ну получается что-то
вроде "безразмерных" массивов как в каком-нибудь javaScript. Но этого
ли хотел автор?
Проблема была бы ясна, если бы автор вопроса чётко и ясно пояснил - а
дл чего собственно ему нужен массив и каким образом он используется в
программе. Создается такое впечатление, что собственно изменение
размера массива и нафик не надо, а это только каприз автора темы.
В общем, хотелось бы услушать ответ на такой вопрос. Тогда бы многое
прояснилось
Но тем не менее, имхо, решение принимать автору треда, мы-то тут чё спорим?.. мы предложили варианты, а какой вариант выбрать, повторюсь, решение за автором))
Это ты, по ходу что-то путаешь.. хэш-таблица относится к пространству имен System.Collections и чем же она по твоему является??? ничем другим, как разновидностью коллекции!!
ну и где я утверждал обратное?
Факт в том что хэш-таблица в данном случае является подмножеством колелкции (отличие в том, что хранит KayValuePair).
А где ты видел, чтоб я утверждал, что это будет работать быстрее? Я лишь говорил, что этот спрособ проще и удобнее!! Как мне кажется, ни одно из этих слов не означает быстрее.
Ну и в чем же он проще и удобнее?
В том что имеем дело со структурой которая здесь мало того что не нужна, так еще и снижает быстродействие, хэш-таблицей которая вообще непонятно зачем нужна и опять же снижает быстродействие???
Слух, если ты кроме классов XMLSerializer и HashTable больше никаких не выучил, то это не значит что они подходят для решения всех проблем и тем более не значит что нужно советовать из использовать везде где попало!
Не ЯКОБЫ... а позволяет идентифицировать элемент ОДНОЗНАЧНО!!! на это он и ключ!! И это его основная задача...
Элемнет можно идентифицировать и без использвания структуры и хэш-таблицы, также однозначно причем этот метод по скорости и удобству превосходит твою хваленую хэш-таблицу:
В случае с многомерным массивом:
A = Arr(10, 20, 30)
В случае с jugged array:
A = Arr(10)(20)(30)
Все.
Разве эти методы можно сравнить с предложеным
M.Item(New Key(3, 4, 5))
Который мало того что бредовый и неинтуитивен, так еще и работать будет в разы меньше???
ну расскажи тогда как ты предлагаешь в твоем варианте изменять размер массива
является полным БРЕДОМ!
Ладно, здесь видимо из принципа никогда не читают первый вопрос, поэтому я намекну побольше.
В вопросе идет речь об использовании Redim Preserve, так вот, я хочу увидеть, как ты выполнишь с HashTable аналогичную операцию.
Поскольку до тебя этот вопрос не доходит, я еще точнее поставлю вопрос.
Нужно удалить из хэш-таблицы все элементы, у которых значение полe J ключа больше 18.
А также добавить в хэш-таблицу элементы у которых значение поля I ключа будет от 0 до 100. Разумеется, если такие элеметы уже есть, то их заменять не нужно.
Добавленым элементам установить значение Nothing.
3-я задача - контролировать размерность того что у тебя там лежит.
Опять же для плохопонимающих - мне не нужно знать HashTable.Count, мне нужно знать, в каких пределах лежат значения поля K ключа хэш-таблицы.
Я уже представляю здесь простыни кода с однообразным кодом, проэтому пока будешь мне их писать, попробуй рассказать мне, что ты будешь делать с упаковкой, распаковкой и перебором элемнетов.
Это тебе стоит перечитать топик, чтобы осознать простую вещь.. что я предложил человеку отказаться от геморроя с многомерными массива и предложил использовать хэш-таблицу.. и в моем варианте массив НЕ используется вообще! А отсюда вытекает следующее: Твой вопрос..
Вместо "гемороя с массивами" которого на самом деле нету, ты предложил геморой и падение производительности с хэш-таблицей и структурами.
Имеется некая база данных (вообще-то рисунок AutoCAD, но он используется как раз как база данных). Так вот, на рисунке есть сечения. На сечениях есть связи. На связях есть точки. Каждая точка имеет два параметра. Мне надо записать эти параметры (я разделяю эти два параметра на два разных массива) в массивы (или во что получится), что бы знать в какой связи и сечении они находятся. Вот и получаются два трехмерных массива:
Трехмерные массивы я использовать не могу, поскольку не могу изменять размерность первых двух индексов. Оглашать статический массив тоже не могу, т.к. далее идет перебор всех этих значений и получается много нулевых значений, т.е. если я задам массив(100, 100, 100), а на самом деле сечений будет 50, то остальные 50 значений этого массива будут пустые, но они будут существовать и приниматься в расчет. В итоге я решил сделать так:
For … цикл по каждому сечению
For … цикл по каждой связи
For … цикл по каждой точке
ReDim Preserve Параметр1(j)
Параметр1(j) = …
ReDim Preserve Параметр2(j)
Параметр2(j) = …
j = j + 1
Next
Next
В итоге получается следующее: создаются массивы Параметр1 и Параметр2:
Параметр1(0) = … 1 точка 1 связи
Параметр1(1) = … 2 точка 1 связи
Параметр1(2) = … 1 точка 2 связи
Параметр1(3) = … 2 точка 2 связи
Параметр1(4) = … 1 точка 3 связи
Параметр1(5) = … 2 точка 3 связи
Т.е. массив параметра1 по трем связям, которые имеют по две точки каждая.
Потом я заношу этот массив в Массив1 как отдельный элемент (т.е. массив массивов).
Далее мне надо отсортировать все это в следующей последовательности: Массив1(0)(0) Массив2(0)(0) Массив1(0)(1) Массив2(0)(1) и работать только с этими данными.
Я пытался создать статический массив Массив(4), занести в него указанные значения и поместить все это в динамический массив М(). В принципе сделать то же самое, только с сортировкой. Однако при записи второго элемента М(1), первый элемент М(0) перезаписывался этим же значением, и в итоге получался массив М(), глее все элементы равны последнему.
Пока на этом я и остановился.