Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
Коллекции: Ordered Map.
Запись от wvxvw размещена 14.03.2010 в 22:12
Вот понадобилась такая штука - из ближайших аналогов, ну, наверное TreeMap в Java но не совсем. Отличия в том, что допускаются повторные ключи и нет ни дефолтной (ни вообще никакой) функции сравнения. Основана на принципе двунаправленого незамкнутого линейного списка, но кроме ссылки на следующий и предыдущий элементы есть еще и ссылка на родителя / первый элемент. Ключи обязаны быть строками (но технически, можно и параметризовать. Но мне для моей задачи мужны были только строки. К Map прилагаются три итератора, один проходит по списку детей первого уровня, не фильтруя, другой делает то же самое, но с фильтрацией, третий обходит все элементы с фильтрацией.
Исходники: http://code.google.com/p/e4xu/source...ws/collections
Тест:
/** * ... * @author wvxvw */ package tests; import org.flashdevelop.utils.FlashConnect; import org.wvxvws.collections.Map; import org.wvxvws.collections.Node; class TestMap { public function new() { } public static function main():Void { haxe.Log.trace = function(s:String, ?pi:haxe.PosInfos) { FlashConnect.trace(s); }; var m:Map<Float> = new Map<Float>(false); m.add("foo", 150.0); m.add("bar", 100.0); m.add("bar", 200.0); m.add("foobar", 250.0); m.map("bar", "foo"); var l:List<Float> = new List<Float>(); m.get("bar", l); trace("List " + l); trace(m); for (i in m) trace(i); trace("-- filtered --"); for (i in m.filter(filter)) trace(i); trace("-- all --"); for (i in m.all(filterAll)) trace(i); } private static function filter(name:String, value:Float):Bool { return name == "bar"; } private static function filterAll(name:String, value:Float):Bool { return true; } }
Всего комментариев 0
Комментарии
Последние записи от wvxvw
- Dired - текстовый проводник по файловой системе (29.06.2013)
- Навигация по HTML с WASD (09.06.2012)
- JavaScript, все не так плохо (07.06.2012)
- Что такое tarball и чем его пакуют (11.04.2012)
- Критика Presentation Model (18.02.2012)