foonfyrick, Ваш for под капотом использует итератор. Поэтому не удивительно, что скорость одинаковая. А вот вы напишите свою структуру, которая не реализует интерфейс итератора и посмотрите, что будет.
Если у вас, к примеру, есть LinkedList и вы хотите обойти все его элементы, то используя итератор у вас будет ноль накладных расходов, а обход циклом создаст оверхед на каждой итерации - ведь чтобы найти i-й элемент списка, вам надо пройтись по списку от нулевого и до i-го. А если у вас там 100500 элементов?
Когда вы пишите listOf() вы вызываете функцию которая каким-то магическим образом создаёт вам список, а ArrayList() - вызов конструктора конкретного класса.
В данный момент, метод listOf реализован с помощью ArrayList, но не исключено, что в будущем могут быть использованы другие типы коллекций, более эффективные по памяти за счёт своей неизменности.
Т. е. все эти функции введены для удобства абстрагирования интерфейса от реализации.
an_tropa, Я бы рассматривал вариант между Delphi (или FreePascal если нужна поддержка Linux) и C++ (на Qt).
По поводу одного файла установки - не понимаю в чём проблема, ведь в него можно запихнуть всё что угодно. Вы не путаете его с исполняемым файлом (.exe)? Если вам нужна программа в виде одного исполняемого файла, то тогда остаются только Delphi и С++ (на WinAPI).
На ваш вопрос невозможно дать однозначный ответ, т.к. действительно, эту программу вполне можно сделать используя разные языки.
Единственное, если ориентироваться на условие "Также хочется избежать установки дополнительных библиотек, что бы установил на ПК программу открыл и можно работать." то под это не подходит C# и Java.
Developer, Написали бы просто, что есть 2 независимых механизма определения местоположения. Один - точный (GPS), второй - условный (WiFi). А то фразу "Андроид дополняет точность местоположения" можно понять, что имея в наличии GPS координаты и используя WiFi, вдруг можно увеличить точность (нет).
И может вы не в курсе, но обычно менеджер памяти выделяет память кратными блоками: по 16, 32, 64 и т.д. байт. Так что если вы запросили 5 байт, потом оптимизировали строку до 3-х байт и попросили менеджер уменьшить размер, то он ничего делать не будет, а так и оставит занятыми 16 байт.
wisgest, Да, если рассматривать частный случай, но если память была выделена через malloc, то так делать нельзя. Ну или надо ещё где-то хранить отдельно указатель, для удаления памяти.
Память выделена под строку одним блоком, этим же блоком она и может быть освобождена. Что касается удаления пробелов, то можно переместить символы ab в начало строки и добавить \0 после них, таким образом получится, что пробелы из строки удалены. Но адрес символа "a" изменится.
Да, но эта память выделена под указатели, а не под сами объекты. Сами же объекты элементов списка хранятся "кто-где", а не в непрерывной области памяти.
Влад Ковальчук, TypeScript транслируется в JavaScript, а код на языке Си транслируется в машинные инструкции процессора. Разница между первым и вторым - огромная.