Как лучше всего хранить историю состояний и выплат в виде списка в Java - PullRequest
0 голосов
/ 04 августа 2020

У меня проблема с моим списком, в котором хранится история.

Обычно у меня есть матрица ячеек, и каждая ячейка имеет состояние, выплату и историю. История - это объект, который содержит проверяемые char state и double payout, но у меня много проблем со ссылками. Пока я пытаюсь скопировать всю историю, создается ссылка, с которой я не знаю, как обрабатывать. Я пытался всеми возможными способами избавиться от этих ссылок):

public class Cell {

    public char state;
    public double payout;
    
    public class History{

        public char state='E';
        public double result;
        
        public History (char state, double result)
        {
            this.state=state;
            this.result=result;
        }
        public History (History history)
        {
            this.state=history.state;
            this.result=history.result;
        }
        public char getState()
        {
            return state;
        }
        public double getResult()
        {
            return result;
        }
    }


    public LinkedList<History> history;

    public Cell (Settings settings)
    {
        this.state=settings.state;
        this.payout=0;
        history= new LinkedList<History>();
    }
    public void copyCell ( Cell dest, Cell temp)
    {
        dest.state=temp.state;
        dest.payout=temp.payout;
        
        dest.history= new LinkedList<History>();
        
        for (int i =0; i<temp.history.size(); i++)
        {
            double result1=temp.history.get(i).result;
            char state1=temp.history.get(i).state;
            
            dest.history.add(new History (state1,result1));
        }
    }
}

Что я делаю не так? Думаю, я не знаю разницы между копированием проверяемых объектов и ссылкой на объект. Может кто-нибудь мне это объяснить?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Что касается лучшего способа хранения истории выплат, я бы сделал следующее:

Вам нужно 3 компонента - time, state и result количество.

  1. Время требуется, чтобы вы могли отсортировать историю так, как вам нравится, и могли загружать ее в указанном порядке из базы данных.
  2. Я бы использовал связанный список, поскольку он сохраняет порядок вставки
  3. Клонировать историю легко просто клонировать весь список List<History> cloned = new LinkedList<>(oldList);
0 голосов
/ 04 августа 2020

Вы должны посмотреть на шаблон momento . Этот - хорошее руководство, чтобы узнать, как его реализовать, а также что это такое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...