Было бы гораздо проще использовать пользовательские компараторы:
Сортировка по name
:
Arrays.sort(carArray, Comparator.comparing(Car::name));
Сортировка по colour
:
Arrays.sort(carArray, Comparator.comparing(Car::colour));
Итак, вы можете изменить getSortedArray()
:
public static Car[] getSortedArray(Car[] carArray, Comparator<Car> comparator) {
Car[] sorted = carArray.clone()
Arrays.sort(sorted, comparator);
return sorted;
}
И называть его следующим образом:
Car[] sorted = getSortedArray(carArray, Comparator.comparing(Car::name));
Изменить:
Если вы используете языковая версия, которая не поддерживает эти функции, вы можете создавать компараторы, явно создавая вложенный класс, реализующий интерфейс Comparator
.
Это, например, одноэлемент Comparator
, который сравнивает Car
экземплярами name
:
static enum ByName implements Comparator<Car> {
INSTANCE;
@Override
public int compare(Car c1, Car c2) {
return c1.name().compareTo(c2.name());
}
}
Затем вызывать:
Car[] sorted = getSortedArray(carArray, ByName.INSTANCE);
@echo off
setlocal
set "string=hostname2"
set "insert=192.168.128 hostname5"
for /f "tokens=1-2 delims= " %%A in (file.txt) do (
echo %%A %%B
if /i "%%~B" == "%find%" echo %insert%
) >> file.tmp
move /y file.tmp file.txt
Переменная string
- это строка для поиска. Переменная insert
- это новая строка для вставки после строки, которая соответствует значению string
.
Цикл for
разделяет каждую строку чтения пробелом на 2 токена. Первым токеном будет IP-адрес (который, кажется, пропускает октат).
Если значение string
найдено во 2-м токене на текущей строке, то читается строка insert
.
После завершения записи в file.tmp
файл заменяет file.txt
.