Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2012, 14:11   #1
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию Сравнение ArrayList

Привет.Есть 2 ArrayList забитых элементами обозначающими пути к файлам. Первый лист это пути файлов которые были при первоначальном сканировании папки, второй лист это новое сканирование папки. Мне нужно сравнить новый сканлист со старым и элементы которые который появились в новом сканлисте но которых нет в старом записать в третий ArrayList. Но как то в голове не укладывается как сделать это сравнение
Может есть примеры какие нибудь по работе с ArrayList по сравнению содержимого? Как и обычно проблема наверно решается элементарно
hitman12 вне форума Ответить с цитированием
Старый 26.03.2012, 15:00   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Попробую самое банальное предложить. Если нет то покажите пример массива1 и массива2
Код:
foreach(string fname in array1)
{
if(array2.Contain(fname))
{
//содержит
}
else
{
//не содержит
}
}
Guy вне форума Ответить с цитированием
Старый 28.03.2012, 10:17   #3
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Guy Посмотреть сообщение
Попробую самое банальное предложить. Если нет то покажите пример массива1 и массива2
А этот метод будет давать максимальную производительность по поиску например в 10000000000000000 строк? Просто сейчас у меня мало пока путей но потом эта программа будет стоять на серваке на котором может быть не ограниченое количество путей к файлам)

Спасибо метод работает) Но остался вопрос производительности при огромных списках путей)

Последний раз редактировалось hitman12; 28.03.2012 в 10:29.
hitman12 вне форума Ответить с цитированием
Старый 28.03.2012, 11:03   #4
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Ну по сути дела чем короче строка тем быстрее проверка.

Если у тебя есть какой то корень допустим C:\FFF\DDD\ и файлы с папками внутри этой директории уже то быстрее поиск произодёт если ты будешь хранить не абсолютныый а относительный путь

Не
C:\FFF\DDD\1\1.txt
а
1\1.txt

А так тут трудоёмкость Длины массива1*массива2 и это не мало. Тупо каждая строчка сарвнивается с другой.
Оптимизация : 1) Не сравнивать уже найденые строчки из Массива1 с массивом2. 2) Проверять файлы по директориям. тоесть хранить не весь массив с путями а иметь что то типо листа с диреториями и его внутренними файлами и поддиреториями, чтобы при проверке массиваДО с массивомПОСЛЕ не нужно было каждый файл прогонять по всему списку а достаточно было найти директорию с нужной поддиректорией после чего сравнить. Тогда трудоёмкость длина массив1+массив2
Guy вне форума Ответить с цитированием
Старый 04.04.2012, 12:59   #5
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию

как сделать аварийный останов программы по нажатию определенной клавиши?
У меня консольная программа и по нажатию например ESC она должна приостановить свою работу) Есть ли готовые методы такой остановки или их самому писать нужно?
hitman12 вне форума Ответить с цитированием
Старый 04.04.2012, 13:19   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

hitman12

ArrayList
сравнить новый сканлист со старым
10000000000000000 строк?

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

Код:
var oldPaths = new HashSet<string>();
var newPaths = new HashSet<string>();
...

newPaths.ExceptWith(oldPaths);
Rififi вне форума Ответить с цитированием
Старый 04.04.2012, 13:33   #7
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
hitman12

ArrayList
сравнить новый сканлист со старым
10000000000000000 строк?

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

Код:
var oldPaths = new HashSet<string>();
var newPaths = new HashSet<string>();
...

newPaths.ExceptWith(oldPaths);
Я сравнивание уже сделал) Я тут другой вопрос задал про машинный останов) не хочу просто плодить темы)
hitman12 вне форума Ответить с цитированием
Старый 04.04.2012, 16:00   #8
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Если у тебя в потоке делается то его на паузу поставь..
Guy вне форума Ответить с цитированием
Старый 12.04.2012, 13:41   #9
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию

Новый вопрос)
Сейчас хочу прикрутить к своему консольному проекту БД, пол инета облазил голова уже кругом идет (хочется только материться). Сам никогда БД не занимался но по диплому нужно прикрутить БД из 3 столбцов Num, Name, Password и нужно к проекту моему прикрутить метод в который я буду отсылать имя пользователя, метод будет искать его по базе данных и возвращать его пароль. Но я в душе не грею как этот метод писать, может поможет кто с БД на ты?

ах да вопрос еще как получить путь корневого каталога программы?

Последний раз редактировалось hitman12; 12.04.2012 в 14:05.
hitman12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# arraylist world12_tk Помощь студентам 2 09.08.2011 10:19
ArrayList и FOR Anonim69 C# (си шарп) 3 13.04.2011 08:31
ArrayList musomoh Общие вопросы .NET 9 11.05.2010 02:03
ArrayList jona Общие вопросы по Java, Java SE, Kotlin 7 30.04.2010 13:45
arraylist WOWka777 Общие вопросы .NET 4 11.04.2010 19:05