Что бы не поехало удаление решил удалять с конца
все что в args добавил в ArrayList и отсортировал
Пошел с конца и начал удалять . Что бы не было наложения удалив 0 элемент потом первый не удалю так как он станнит нулевым
Ну дядя Валидатор опять думает что я волк позорный
case "-d":
ArrayList<String> sort = new ArrayList();
for (int j = 1; j < args.length; j++) {
sort.add(args[j]);
}
Collections.sort(sort);
for(int j=sort.size()-1;j>-1;j--) {
Thread3 thread3 = new Thread3(Integer.parseInt(sort.get(j)));
thread3.start();
thread3.join();
}
break;
вот тут это действо потом я просто запуская поток
хотя мне кажется что я делаю какую то херь
потому что мне абсолютно не нравится что мы удаляем как будто из базы значения все мое я просто протестует против этого нужно по факту помечать их на удаление и какнить удалять в монопольном режиме да и эта строка мне тоже не нравится thread3.join(); Типа я запущу следующий поток когда отработает этот поток
Спасибо
package com.javarush.task.task17.task1711;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
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("Петров1 Петр", new Date())); //сегодня родился id=1
// allPeople.add(Person.createMale("Иванов2 Иван", new Date())); //сегодня родился id=2
// allPeople.add(Person.createMale("Петров3 Петр", new Date())); //сегодня родился id=3
// allPeople.add(Person.createMale("Иванов4 Иван", new Date())); //сегодня родился id=4
// allPeople.add(Person.createMale("Петров5 Петр", new Date())); //сегодня родился id=5
// allPeople.add(Person.createMale("Иванов6 Иван", new Date())); //сегодня родился id=6
// allPeople.add(Person.createMale("Петров7 Петр", new Date())); //сегодня родился id=7
// allPeople.add(Person.createMale("Иванов8 Иван", new Date())); //сегодня родился id=8
// allPeople.add(Person.createMale("Петров9 Петр", new Date())); //сегодня родился id=9
// allPeople.add(Person.createMale("Иванов10 Иван", new Date())); //сегодня родился id=10
// allPeople.add(Person.createMale("Петров11 Петр", new Date())); //сегодня родился id=11
// allPeople.add(Person.createMale("Иванов12 Иван", new Date())); //сегодня родился id=12
// allPeople.add(Person.createMale("Петров13 Петр", new Date())); //сегодня родился id=13
// allPeople.add(Person.createMale("Иванов14 Иван", new Date())); //сегодня родился id=14
// allPeople.add(Person.createMale("Петров15 Петр", new Date())); //сегодня родился id=15
// allPeople.add(Person.createMale("Иванов16 Иван", new Date())); //сегодня родился id=16
// allPeople.add(Person.createMale("Петров17 Петр", new Date())); //сегодня родился id=17
// allPeople.add(Person.createMale("Иванов18 Иван", new Date())); //сегодня родился id=18
// allPeople.add(Person.createMale("Петров19 Петр", new Date())); //сегодня родился id=19
// allPeople.add(Person.createMale("Иванов20 Иван", new Date())); //сегодня родился id=20
// allPeople.add(Person.createMale("Петров21 Петр", new Date())); //сегодня родился id=21
// allPeople.add(Person.createMale("Иванов22 Иван", new Date())); //сегодня родился id=22
// allPeople.add(Person.createMale("Петров23 Петр", new Date())); //сегодня родился id=23
// allPeople.add(Person.createMale("Иванов24 Иван", new Date())); //сегодня родился id=24
// allPeople.add(Person.createMale("Петров25 Петр", new Date())); //сегодня родился id=25
// allPeople.add(Person.createMale("Иванов26 Иван", new Date())); //сегодня родился id=26
// allPeople.add(Person.createMale("Петров27 Петр", new Date())); //сегодня родился id=27
}
public static void main(String[] args) throws InterruptedException {
//start here - начни тут
// args = new String[] {"-c", "Василий", "м", "15/04/1990", "Василий1", "м", "15/04/1990", "Василий2", "м", "15/04/1990", "Василий3", "м", "15/04/1990", "Василий4", "м", "15/04/1990"};
//args = new String[] {"-u", "1", "Елена", "ж", "08/09/1993"};
// args = new String[]{"-d", "5","4","2","0","1"};
// args = new String[]{"-i","0", "1"};
switch (args[0]) { //-c name1 sex1 bd1 name2 sex2 bd2
case "-c":
for (int j = 1; j < args.length; ) {
Thread1 thread1 = new Thread1((args[j]), (args[j + 1]), (args[j + 2]));
thread1.start();
thread1.join();
j = j + 3;
}
// for (int i = 0; i < allPeople.size(); i++) {
//// System.out.print(allPeople.get(i).getName() + " ");
// System.out.println(i);
// }
break;
case "-u": //-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
for (int j = 1; j < args.length; ) {
Thread2 thread2 = new Thread2(Integer.parseInt(args[j]), args[j + 1], args[j + 2], args[j + 3]);
thread2.start();
thread2.join();
j = j + 4;
}
for (int i = 0; i < allPeople.size(); i++) {
System.out.print(allPeople.get(i).getName() + " ");
System.out.println(i);
}
break;
case "-d":
ArrayList<String> sort = new ArrayList();
for (int j = 1; j < args.length; j++) {
sort.add(args[j]);
}
Collections.sort(sort);
// for(int j=sort.size()-1;j>-1;j--) {
// System.out.println(sort.get(j));
// }
for(int j=sort.size()-1;j>-1;j--) {
Thread3 thread3 = new Thread3(Integer.parseInt(sort.get(j)));
thread3.start();
thread3.join();
}
// for (int i=0;i<allPeople.size();i++){
// System.out.print(allPeople.get(i).getName()+" ");
// System.out.println(i);
// }
break;
case "-i":
for (int j = 1; j < args.length; j++) {
Thread4 thread4 = new Thread4(Integer.parseInt(args[j]));
thread4.start();
thread4.join();
}
// for (int i = 0; i < allPeople.size(); i++) {
// System.out.print(allPeople.get(i).getName() + " ");
// System.out.println(i);
// }
break;
}
}
public static class Thread1 extends Thread {
private String name;
private String sex;
private String data;
private DateFormat enter = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
public Thread1(String name, String sex, String data) {
this.name = name;
this.sex = sex;
this.data = data;
}
@Override
public void run() {
try {
newPeople(name, sex, data, enter);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
public static class Thread2 extends Thread { //-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
private int id;
private String name;
private String sex;
private String data;
private DateFormat enter = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
public Thread2(int id, String name, String sex, String data) {
this.id = id;
this.name = name;
this.sex = sex;
this.data = data;
}
@Override
public void run() {
try {
replacePeople(id, name, sex, data, enter);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
public static class Thread3 extends Thread { //-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
private int id;
public Thread3(int id) {
this.id = id;
}
@Override
public void run() {
deletePeople(id);
}
}
public static class Thread4 extends Thread { //-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
private int id;
SimpleDateFormat exit = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
public Thread4(int id) {
this.id = id;
}
@Override
public void run() {
showPeople(id, exit);
}
}
public static synchronized void newPeople(String name, String sexname, String date1, DateFormat enter) throws ParseException {
if (sexname.equals("м")) {
Date date2 = enter.parse(date1);
allPeople.add(Person.createMale(name, date2));
}
if (sexname.equals("ж")) {
Date date2 = enter.parse(date1);
allPeople.add(Person.createFemale(name, date2));
}
System.out.println((allPeople.size() - 1));
}
public static synchronized void replacePeople(int id, String name, String sexname, String date1, DateFormat enter) throws ParseException {
allPeople.get(id).setName(name); //-u id name sex bd
if (sexname.equals("м"))
allPeople.get(id).setSex(Sex.MALE);
else
allPeople.get(id).setSex(Sex.FEMALE);
Date date2 = enter.parse(date1);
allPeople.get(id).setBirthDate(date2);
}
public static synchronized void deletePeople(int id) {
// allPeople.get(id).setName(null);
// allPeople.get(id).setSex(null);
// allPeople.get(id).setBirthDate(null);
allPeople.remove(id);
}
public static synchronized void showPeople(int id, SimpleDateFormat exit) {
System.out.print(allPeople.get(id).getName());
System.out.print(" ");
if (allPeople.get(id).getSex().equals(Sex.MALE)) System.out.print("м");
else System.out.print("ж");
System.out.print(" ");
System.out.print(exit.format(allPeople.get(id).getBirthDate()));
System.out.println();
}
}