diff --git a/chain/src/main/java/ru/molokoin/App.java b/chain/src/main/java/ru/molokoin/App.java index d214c13..d7b51a2 100644 --- a/chain/src/main/java/ru/molokoin/App.java +++ b/chain/src/main/java/ru/molokoin/App.java @@ -3,24 +3,47 @@ public class App { public static void main(String[] args) { System.out.println("Запущен поток: " + Thread.currentThread().getName()); //данные - int[] i = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + //int[] i = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + String i[] = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; //Хранилище Pearl treasury = new Pearl(); - treasury.add(i[0]); - treasury.add(i[1]); - treasury.add(i[2]); - treasury.add(i[3]); - treasury.add(i[4]); - treasury.add(i[5]); - treasury.add(i[6]); - treasury.add(i[7]); - treasury.add(i[8]); - treasury.add(i[9]); + + //добавляем элементы в конец/последовательно + treasury.addLast(i[0]); + treasury.addLast(i[1]); + // treasury.addLast(i[2]); + // treasury.addLast(i[3]); + // treasury.addLast(i[4]); + // treasury.addLast(i[5]); + // treasury.addLast(i[6]); + // treasury.addLast(i[7]); + // treasury.addLast(i[8]); + // treasury.addLast(i[9]); + + //добавляем элементы в начало списка + // treasury.addFirst(i[0]); + // treasury.addFirst(i[1]); + // treasury.addFirst(i[2]); + // treasury.addFirst(i[3]); + // treasury.addFirst(i[4]); + // treasury.addFirst(i[5]); + // treasury.addFirst(i[6]); + // treasury.addFirst(i[7]); + // treasury.addFirst(i[8]); + // treasury.addFirst(i[9]); + //печать из хранилища treasury.print(); - System.out.print("Последний элемент списка: "); + //печать последнего элемента + System.out.print("Последний элемент списка (get): "); treasury.getLast().print(); + System.out.print("Последний элемент списка (execute): "); + treasury.executeLast().print(); + + //печать из хранилища + System.out.print("Оставшиеся в списке данные: "); + treasury.print(); } } diff --git a/chain/src/main/java/ru/molokoin/Pearl.java b/chain/src/main/java/ru/molokoin/Pearl.java index a5a02c7..614dba8 100644 --- a/chain/src/main/java/ru/molokoin/Pearl.java +++ b/chain/src/main/java/ru/molokoin/Pearl.java @@ -6,11 +6,15 @@ package ru.molokoin; * это структура, хранящая данные в виде цепочки, каждый узел которой хранит очередное значение списка и ссылку на следующий узел. * Ссылка на следующий узел последнего элемента списка равна null. * + * TODO обработать исключения: + * - + * */ public class Pearl { private Object gem; private Pearl next; + //использую для переписи данных массива public Pearl(){ this(null, null); } @@ -21,6 +25,38 @@ public class Pearl { setGem(gem); setNext(next); } + /** + * Удаляет с ожерелья последнюю жемчужину, + * возвращает эту жемчужину + * @return + * TODO в списке может быть только один элемент + */ + public Pearl executeLast(){ + //получил последнюю жемчужину, можно удалять ее с ожерелья + Pearl last = getLast();//можно данные получать в том же переборе, где и удаление происходит (исключим один перебор) + + /** + * удаление последней жемчужины. + * в предпоследней жемчужине next приравниваем null + */ + int i = 0; + Pearl current = this; + while (i < lenght()-1){ + current = current.next; + i++; + } + current.setNext(null); + return last; + } + public int lenght(){ + int lenght = 0; + Pearl current = this; + while(current.next != null){ + current = current.getNext(); + lenght++; + } + return lenght; + } /** * Рекурсивно печатает данные, пока не упрется в next = null */ @@ -31,10 +67,11 @@ public class Pearl { } } /** + * Добавление элемента в конец списка * перебирает жемчужины до конца, последней присваивет в next новую жемчужину * @param gem */ - public void add(Object gem){ + public void addLast(Object gem){ if(this.gem == null){setGem(gem);} else { Pearl pearl = new Pearl(gem); @@ -45,7 +82,28 @@ public class Pearl { current.next = pearl; } } - + /** + * Добавление элемента в начало списка. + * + * @param gem + */ + public void addFirst(Object gem){ + if(this.gem == null){setGem(gem);} + else { + //создаем новую жемчужину с параметрами первой + Pearl pearl = new Pearl(getGem()); + pearl.setNext(getNext()); + //пишем в текущую-первую жемчужину новые данные + setGem(gem); + //и устанавливаем ссылку на новую жемчужину + setNext(pearl); + } + } + /** + * возвращает последнюю жемчужину-Pearl + * getLast().getGem()//вернет данные последней жемчужины + * @return + */ public Pearl getLast(){ Pearl current = this; while (current.next != null){ @@ -60,6 +118,7 @@ public class Pearl { this.gem = gem; } /** + * Возвращает данные-gem жемчужины * @return the gem */ public Object getGem() { diff --git a/chain/target/classes/ru/molokoin/App.class b/chain/target/classes/ru/molokoin/App.class index 353db49..d034174 100644 Binary files a/chain/target/classes/ru/molokoin/App.class and b/chain/target/classes/ru/molokoin/App.class differ diff --git a/chain/target/classes/ru/molokoin/Pearl.class b/chain/target/classes/ru/molokoin/Pearl.class index 01d709c..10ca992 100644 Binary files a/chain/target/classes/ru/molokoin/Pearl.class and b/chain/target/classes/ru/molokoin/Pearl.class differ diff --git a/chain/target/classes/ru/molokoin/Treasury.class b/chain/target/classes/ru/molokoin/Treasury.class deleted file mode 100644 index bc2986b..0000000 Binary files a/chain/target/classes/ru/molokoin/Treasury.class and /dev/null differ