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 { @@ -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();
}
}

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

@ -6,11 +6,15 @@ package ru.molokoin; @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -60,6 +118,7 @@ public class Pearl {
this.gem = gem;
}
/**
* Возвращает данные-gem жемчужины
* @return the gem
*/
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