Для чего здесь нужно добавить Synchrozed по allPeiple, ведь потоки в задаче не используются?
package com.javarush.task.task17.task1711;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Calendar;
import java.util.GregorianCalendar;
/*
CRUD 2
*/
public class Solution {
public static volatile List<Person> allPeople = new ArrayList<Person>();
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) {
Person p;
Calendar calendar;
SimpleDateFormat sdF = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
switch (args[0]) {
case "-c":
for (int i=1; i<args.length; i=i+3) {
String[] date = args[i+2].split("/");
calendar= new GregorianCalendar(Integer.parseInt(date[2]), Integer.parseInt(date[1])-1,Integer.parseInt(date[0]));
allPeople.add((args[i+1]=="м")?Person.createMale(args[i], calendar.getTime()):Person.createFemale(args[i], calendar.getTime()));
System.out.println(allPeople.size()-1);
}
break;
case "-u":
for (int i=1; i<args.length; i=i+4) {
String[] date1 = args[i+3].split("/");
calendar= new GregorianCalendar(Integer.parseInt(date1[2]), Integer.parseInt(date1[1])-1,Integer.parseInt(date1[0]));
p = allPeople.get(Integer.parseInt(args[i]));
p.setName(args[i+1]);
p.setSex((args[i+2]=="м")?Sex.MALE:Sex.FEMALE);
p.setBirthDate(calendar.getTime());
}
break;
case "-d":
for (int i=1; i<args.length; i=i+1) {
p = allPeople.get(Integer.parseInt(args[i]));
p.setName(null);
p.setSex(null);
p.setBirthDate(null);
}
break;
case "-i":
for (int i=1; i<args.length; i=i+1) {
p = allPeople.get(Integer.parseInt(args[i]));
System.out.println(p.getName() + ((p.getSex()==Sex.MALE)?" м ":" ж ") + sdF.format(p.getBirthDate()) + "\n");
}
}
}
}