Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions lesson/lesson1.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

![Screenshot_5](https://user-images.githubusercontent.com/29703461/199550057-fce7cf3c-7040-422f-b490-7b85b47ae952.png)

- Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве
- Реализуйте методы `save, get, delete, clear, getAll, size` в классе `com.urise.webapp.storage.ArrayStorage`, организовав хранение резюме в массиве
- Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов
- При реализации метода `delete` учитывайте, что после удаления резюме между оставшимися резюме не должно быть пустых ячеек, заполненных null
```
Expand Down Expand Up @@ -95,11 +95,11 @@ r1, r2, r3,..., rn, null, null,..., null
1. Перед каждым коммитом не забывайте пользоваться сочетанием клавиш `Ctrl + Alt + L` (автоматическое форматирование кода)
1. Удаляйте в классах неиспользуемые импорты (`Ctrl + Alt + O`)
1. Не игнорируй подсказки IDEA (подсвечивает)
1. В методе `clear()` обнуление массива предполагает обнуление (null) ячеек, где хранятся Resume, а не создание нового или присваивание ему null
1. В методе `clear()` обнуление массива предполагает обнуление (null) ячеек, где хранятся com.urise.webapp.model.Resume, а не создание нового или присваивание ему null
1. При реализации методов не используйте коллекции
1. Не меняйте сигнатуры методов в `ArrayStorage`
1. Не добавляйте в `Resume` новые поля
1. Resume r — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях
1. Не меняйте сигнатуры методов в `com.urise.webapp.storage.ArrayStorage`
1. Не добавляйте в `com.urise.webapp.model.Resume` новые поля
1. com.urise.webapp.model.Resume r — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях

## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 5. [Вебинар "Быть программистом: от детства к зрелости"](https://www.youtube.com/watch?v=D5Hej0TyLaU)
- [Слайды вебинара](https://docs.google.com/presentation/d/1YwtCCZsaGMdl-V15kTDHiJxiS52IAl-qqheNPpiNr54/)
Expand Down
52 changes: 0 additions & 52 deletions src/ArrayStorage.java

This file was deleted.

15 changes: 12 additions & 3 deletions src/MainArray.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import com.urise.webapp.model.Resume;
import com.urise.webapp.storage.ArrayStorage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* Interactive test for ArrayStorage implementation
* Interactive test for com.urise.webapp.storage.ArrayStorage implementation
* (just run, no need to understand)
*/
public class MainArray {
Expand All @@ -13,7 +15,8 @@ public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Resume r;
while (true) {
System.out.print("Введите одну из команд - (list | size | save uuid | delete uuid | get uuid | clear | exit): ");
System.out.print("Введите одну из команд - "
+ "(list | update uuid | size | save uuid | delete uuid | get uuid | clear | exit): ");
String[] params = reader.readLine().trim().toLowerCase().split(" ");
if (params.length < 1 || params.length > 2) {
System.out.println("Неверная команда.");
Expand All @@ -27,12 +30,18 @@ public static void main(String[] args) throws IOException {
case "list":
printAll();
break;
case "update":
r = new Resume();
r.setUuid(uuid);
ARRAY_STORAGE.update(r);
printAll();
break;
case "size":
System.out.println(ARRAY_STORAGE.size());
break;
case "save":
r = new Resume();
r.uuid = uuid;
r.setUuid(uuid);
ARRAY_STORAGE.save(r);
printAll();
break;
Expand Down
15 changes: 9 additions & 6 deletions src/MainTestArrayStorage.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,31 @@
import com.urise.webapp.model.Resume;
import com.urise.webapp.storage.ArrayStorage;

/**
* Test for your ArrayStorage implementation
* Test for your com.urise.webapp.storage.ArrayStorage implementation
*/
public class MainTestArrayStorage {
static final ArrayStorage ARRAY_STORAGE = new ArrayStorage();

public static void main(String[] args) {
Resume r1 = new Resume();
r1.uuid = "uuid1";
r1.setUuid("uuid1");
Resume r2 = new Resume();
r2.uuid = "uuid2";
r2.setUuid("uuid2");
Resume r3 = new Resume();
r3.uuid = "uuid3";
r3.setUuid("uuid3");

ARRAY_STORAGE.save(r1);
ARRAY_STORAGE.save(r2);
ARRAY_STORAGE.save(r3);

System.out.println("Get r1: " + ARRAY_STORAGE.get(r1.uuid));
System.out.println("Get r1: " + ARRAY_STORAGE.get(r1.getUuid()));
System.out.println("Size: " + ARRAY_STORAGE.size());

System.out.println("Get dummy: " + ARRAY_STORAGE.get("dummy"));

printAll();
ARRAY_STORAGE.delete(r1.uuid);
ARRAY_STORAGE.delete(r1.getUuid());
printAll();
ARRAY_STORAGE.clear();
printAll();
Expand Down
13 changes: 0 additions & 13 deletions src/Resume.java

This file was deleted.

23 changes: 23 additions & 0 deletions src/com/urise/webapp/model/Resume.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.urise.webapp.model;

/**
* Initial resume class
*/
public class Resume {

// Unique identifier
private String uuid;

public String getUuid() {
return uuid;
}

public void setUuid(String uuid) {
this.uuid = uuid;
}

@Override
public String toString() {
return uuid;
}
}
77 changes: 77 additions & 0 deletions src/com/urise/webapp/storage/ArrayStorage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.urise.webapp.storage;

import com.urise.webapp.model.Resume;
import java.util.Arrays;

/**
* Array based storage for Resumes
*/
public class ArrayStorage {

private Resume[] storage = new Resume[10000];
private int storageSize;

public void clear() {
for (int i = 0; i < storageSize; i++) {
storage[i] = null;
}
storageSize = 0;
}

public void update(Resume r) {
int index = getPresentResumeIndex(r.getUuid());
if (index >= 0) {
storage[index] = r;
} else {
System.out.println("There are not resume with this uuid!");
}
}

public void save(Resume r) {
int index = getPresentResumeIndex(r.getUuid());
if (index == -1) {
storage[storageSize++] = r;
} else {
System.out.println("This resume already exists!");
}
}

public Resume get(String uuid) {
int index = getPresentResumeIndex(uuid);
if (index >= 0) {
return storage[index];
}
return null;
}

public void delete(String uuid) {
int index = getPresentResumeIndex(uuid);
if (index >= 0) {
storageSize--;
storage[index] = storage[storageSize];
storage[storageSize] = null;
} else {
System.out.println("There are not resume with this uuid!");
}
}

/**
* @return array, contains only Resumes in storage (without null)
*/
public Resume[] getAll() {
return Arrays.copyOf(storage, storageSize);
}

public int size() {
return storageSize;
}

private int getPresentResumeIndex(String uuid) {
for (int i = 0; i < storageSize; i++) {
if (uuid.equals(storage[i].getUuid())) {
return i;
}
}
return -1;
}
}