CrUD Batch - multiple Creation, Updates, Deletion.
Программа запускается с одним из следующих наборов параметров:
-c name1 sex1 bd1 name2 sex2 bd2 ...
-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
-d id1 id2 id3 id4 ...
-i id1 id2 id3 id4 ...
Значения параметров:
name - имя, String
sex - пол, "м" ил
CRUD 2
- 18
- Недоступна
Комментарии (370)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Евгений Коротаев Аналитик в Комус
12 января, 18:34
Для передачи параметров запуска не обязательно делать компиляцию или менять настройки проекта, просто не забываем что args массив стрингов, который можно переопределить и в коде, например, сразу после входа в метод main:
Главное, перед отправкой на валидацию не забыть закомментировать строки с переопределением args. +3
Владислав Дуплянкин 24 уровень, Сан-Франциско
28 декабря 2020, 18:52
А я наоборот решил не копипастить решение из первой задачи потому что решил ее не очень красиво. Все повторяющиеся действия, такие как перевод строки в дату, дату в строку, пол и пр. я вывел в отдельные методы. Добавил проверки на NullPointerException. Стремился к тому, чтобы в каждом кейсе switch не было лишних строк, а были лишь вызовы методов, а каждый вызываемый метод специализировался только на своей узкой области. То есть метод СreatePerson занимался только созданием оъекта, но для того, чтобы перевести строку в дату вызывал метод strToDate()... и т.п.
В итоге код стал легко читаемым.
Мне кажется, что если решая задачу, не писать ленейный код, который просто позволяет удовлетворить валидатор, а стремиться писать систему методов, которые взаимосвязаны между собой, и вызывают друг друга. То написаннный код потом будет легче понимать и масштабировать в большие проекты.
0
Филипп 22 уровень
25 декабря 2020, 19:41
Вдруг кому тоже пригодится.
Заинтересовало как switch проверяет строки.
Оказалось в строках переключатель использует String.equals(), причем подмечено, что генерируемый при этом байткод работает эффективнее, чем цепь if-then-else условий.
Также, если возможно что в условие прилетят как строчные,( так и прописные буквы, то следует не забыть перевести строку в условии в один формат, например:
Источник
0
Alexander Lapshin 18 уровень, Череповец
23 декабря 2020, 21:59
погорел на формате даты,
подходит для параметров -с и -u через sdf.parse(args[...]) 0
Максим Дудин 19 уровень, Калининград
18 декабря 2020, 15:48
да ладно... она решилась прикиньте... прям сразу (просто я теперь перед проверкой сразу иду читать комментарии) всё как в прошлой, только через switch (так кстати предлагал сделать javarush в прошлой задаче)
меня смущало вот это
"Порядок вывода данных соответствует вводу данных.
Обеспечить корректную работу с данными для множества нитей (чтоб не было затирания данных)."
как это понимать?(может все варианты параметров должны перебираться и по очереди менять массив allPeople и всё это через организацию потоков... и фиг знает что ещё)
Никак это понимать не нужно.... всё как в прошлой, только
- через switch
- с организацией перебора параметров (их там не сказано сколько поэтому у меня в каждом case организован цикл от 1 до args.length c шагом где i+=3, +4, где +1 в зависимости от передаваемого параметра)
- в теле case все операции обернуть в synchronized ( allPeople)
0
Игорь PM в Москва
11 декабря 2020, 15:45
Сперва подумал, что у Диего крыша поехала, сбросил решение решённой задачи и заставил второй раз задачу с ключами запускать. :) Спать, спать, спать... Хакатон после.
0
Павел 23 уровень, Минск
5 декабря 2020, 19:29
Всегда! Внимательно! ЧИТАЙТЕ УСЛОВИЕ!!!
Который раз уже горю на этом :( Задача работает с первой попытки, а валидатору вечно чего-то не хватает 😜
+1
Maria Stepanova 18 уровень, Москва
2 декабря 2020, 19:21
Задачу решила, но не поняла зачем тут synchronized (allPeople), если все выполняется в одном потоке. Подскажите, если кто- то знает?)
+1
Павел 23 уровень, Минск
5 декабря 2020, 13:26
Задел на будущее, видимо.
0
Kes Чайник в Банк
30 ноября 2020, 01:25
Как и во многих других задачах Валя пишет ошибку в стиле "Что-то не то".
Пока пропустил задачу. В разделе помощь пока не получил ответа. Буду добивать задачу несколько месяцев или лет :)
0
Kes Чайник в Банк
30 ноября 2020, 01:27
Проблема задачи в том, что если проверять ее через сайт, то пишет "иди проверяй в Идею". При этом в идее нет никаких данных о том, на каких данных тестировалось решение.
0
Kes Чайник в Банк
2 декабря 2020, 02:19
Добил. Низкий поклон Артему и Ксении за долгое и скурпулезное консультирование по моему извращенскому решению.
0
Sergii-K 22 уровень, Ljubljana
23 ноября 2020, 12:46
Перемудрил и начал создавать нити и в run запускать отдельно созданные методы, а по факту нужно взять решение предыдущей CRUD со switch и завернуть в synchronized ...
+1