фильтр Цветка : Битовый массив м биты, первоначально весь набор к 0.
Для добавления объекта Вы выполняете его до К хеш-функции, которые дадут Вам К индексы в массиве, который Вы затем устанавливаете на 1.
, Чтобы проверить, находится ли объект в наборе, вычислите К индексы и проверка, если они все установлены на 1.
, Конечно, это дает некоторую вероятность ложных положительных сторон (согласно Википедии, которая это о 0.61^ (m/n), где n является количеством вставленных объектов). Ложные отрицательные стороны не возможны.
Удаление объекта невозможно, но можно реализовать фильтр цветка подсчета , представленный массивом ints и инкремента/декремента.
Получите список файлов из каталога ( File.list ()
) и сравните имена, используя equalsIgnoreCase ()
.
Если расхождения случайны, то для меня решение Шими, включающее рекурсивную проверку сегмента пути, является лучшим решением. На первый взгляд это звучит уродливо, но вы можете спрятать волшебство в отдельном классе и реализовать простой API, возвращающий дескриптор файла для данного имени файла, так что вы просто увидите что-то вроде Translator.translate (file)
call.
Может быть, расхождения статичны, предсказуемы. Тогда я бы предпочел словарь, который можно использовать для перевода заданного имени файла в имена файлов Windows / Linux. Это имеет большое преимущество перед другим методом: меньше риск получить неправильный дескриптор файла.
Если словарь был действительно статическим, вы могли бы создать и поддерживать файл свойств. Если бы он был статичным, но более сложным,