esoe 2 years ago
parent
commit
37a6663f80
  1. 47
      chain/src/main/java/ru/molokoin/App.java
  2. 63
      chain/src/main/java/ru/molokoin/Pearl.java
  3. BIN
      chain/target/classes/ru/molokoin/App.class
  4. BIN
      chain/target/classes/ru/molokoin/Pearl.class
  5. BIN
      chain/target/classes/ru/molokoin/Treasury.class

47
chain/src/main/java/ru/molokoin/App.java

@ -3,24 +3,47 @@ public class App {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("Запущен поток: " + Thread.currentThread().getName()); 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(); Pearl treasury = new Pearl();
treasury.add(i[0]);
treasury.add(i[1]); //добавляем элементы в конец/последовательно
treasury.add(i[2]); treasury.addLast(i[0]);
treasury.add(i[3]); treasury.addLast(i[1]);
treasury.add(i[4]); // treasury.addLast(i[2]);
treasury.add(i[5]); // treasury.addLast(i[3]);
treasury.add(i[6]); // treasury.addLast(i[4]);
treasury.add(i[7]); // treasury.addLast(i[5]);
treasury.add(i[8]); // treasury.addLast(i[6]);
treasury.add(i[9]); // 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(); treasury.print();
System.out.print("Последний элемент списка: "); //печать последнего элемента
System.out.print("Последний элемент списка (get): ");
treasury.getLast().print(); treasury.getLast().print();
System.out.print("Последний элемент списка (execute): ");
treasury.executeLast().print();
//печать из хранилища
System.out.print("Оставшиеся в списке данные: ");
treasury.print();
} }
} }

63
chain/src/main/java/ru/molokoin/Pearl.java

@ -6,11 +6,15 @@ package ru.molokoin;
* это структура, хранящая данные в виде цепочки, каждый узел которой хранит очередное значение списка и ссылку на следующий узел. * это структура, хранящая данные в виде цепочки, каждый узел которой хранит очередное значение списка и ссылку на следующий узел.
* Ссылка на следующий узел последнего элемента списка равна null. * Ссылка на следующий узел последнего элемента списка равна null.
* *
* TODO обработать исключения:
* -
*
*/ */
public class Pearl { public class Pearl {
private Object gem; private Object gem;
private Pearl next; private Pearl next;
//использую для переписи данных массива
public Pearl(){ public Pearl(){
this(null, null); this(null, null);
} }
@ -21,6 +25,38 @@ public class Pearl {
setGem(gem); setGem(gem);
setNext(next); 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 * Рекурсивно печатает данные, пока не упрется в next = null
*/ */
@ -31,10 +67,11 @@ public class Pearl {
} }
} }
/** /**
* Добавление элемента в конец списка
* перебирает жемчужины до конца, последней присваивет в next новую жемчужину * перебирает жемчужины до конца, последней присваивет в next новую жемчужину
* @param gem * @param gem
*/ */
public void add(Object gem){ public void addLast(Object gem){
if(this.gem == null){setGem(gem);} if(this.gem == null){setGem(gem);}
else { else {
Pearl pearl = new Pearl(gem); Pearl pearl = new Pearl(gem);
@ -45,7 +82,28 @@ public class Pearl {
current.next = 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(){ public Pearl getLast(){
Pearl current = this; Pearl current = this;
while (current.next != null){ while (current.next != null){
@ -60,6 +118,7 @@ public class Pearl {
this.gem = gem; this.gem = gem;
} }
/** /**
* Возвращает данные-gem жемчужины
* @return the gem * @return the gem
*/ */
public Object getGem() { public Object getGem() {

BIN
chain/target/classes/ru/molokoin/App.class

Binary file not shown.

BIN
chain/target/classes/ru/molokoin/Pearl.class

Binary file not shown.

BIN
chain/target/classes/ru/molokoin/Treasury.class

Binary file not shown.
Loading…
Cancel
Save