Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические массивы, Из n сделать один без одинаковых эл-ов 
:(
    Опции темы
Softaz
Дата 6.7.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Есть очень много однотипных текстовых файлов (html)
В каждом и них есть некая информация по типу "Параметр Значение"
Количество параметров в каждом файле разное.
Надо узнать все неповторяющиеся параметры, создать таблицу БД с полями==параметрам и заполнить ее значениями.

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

private ArrayList DynArr(ArrayList root_arr, ArrayList sub_arr)
        {
            bool[] sub_arr_add = new bool[sub_arr.Count];

            for (int j = 0; j < sub_arr.Count; j++)
            {
                int addcode = 0;
                for (int i = 0; i < root_arr.Count; i++)
                {
                    if (root_arr[i].ToString() == sub_arr[j].ToString())
                    {
                        addcode++;
                    }
                }
                if (addcode > 0)
                {
                    sub_arr_add[j] = true;
                }
            }

            for (int j = 0; j < sub_arr_add.Length; j++)
            {
                if (!sub_arr_add[j])
                {
                    root_arr.Add(sub_arr[j]);
                }
            }

            return root_arr;
        }

      //Симуляция
            //первичный массив, полученный ранее из сравнения подобных
            System.Collections.ArrayList arr = new System.Collections.ArrayList(0);
            arr.Add("yua");
            arr.Add("1");
            arr.Add("000");

            //с этим массивом сравниваем и добавляем в первичный уникальные имена параметров
            System.Collections.ArrayList sub_arr = new System.Collections.ArrayList(0);
            sub_arr.Add("111_yua");
            sub_arr.Add("1");
            sub_arr.Add("111_000");

            string strc = string.Empty;
            foreach (string str_cmpl in DynArr(arr, sub_arr))
            {
                strc += str_cmpl + Environment.NewLine;
            }
            //выводим, что получилось
            MessageBox.Show(strc);

Код работает, вопрос в том, как сделать быстрее.
Да и мне думается переборщил с функцией.
 


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
arilou
Дата 6.7.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Softaz @  6.7.2006,  16:41 Найти цитируемый пост)
Надо узнать все неповторяющиеся параметры

Используй Hashtable вместо ArrayList. Ключ - имя параметра, значение - его значение. В hashtable ключи уникальны, если попробуешь запихнуть то, что там уже есть, свалится с exception'ом. Перед добавлением нового эл-та можно проверить, есть ли в hashtable уже такой ключ. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Softaz
Дата 7.7.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Спасибо!
При хеши я забыл. Сейчас попробую. 


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.