Совместное использование элементов списка в объекте среди объектов, таких как облачное хранилище (стандартная библиотека) - PullRequest
0 голосов
/ 23 ноября 2018
   class User{
        private String Nickname;
        private String password;
        private ArrayList<E> userdata;
       // methods          
    }

У меня много пользователей, у каждого свои "пользовательские данные".Я бы позволил универсальному пользователю "X" получить доступ к некоторым элементам пользователя "Y".

Я сделал это:

class User{
            private String Nickname;
            private String password;
            private ArrayList<E> userdata;
            private ArrayList<E> data_shared_from_other_users_to_me;
           // methods          
        }

Если пользователь "Y" будет удален, все данныебудет удален вместе с ним, поэтому я буду вынужден сканировать каждого «пользователя», у которого есть элементы «Y» в его переменной «data_shared_from_other_users_to_me», и затем удалять их.

Есть ли лучшее решение, позволяющее делитьсяв случае удаления пользователя удалить все общие данные, которые ищут их внутри каждого пользователя?

1 Ответ

0 голосов
/ 23 ноября 2018
  1. Добавление встроенной или автономной относительной базы данных и использование отношений «многие ко многим» с каскадом
  2. Реализация отношений «многие ко многим» с использованием 2 хэш-карт (Map<SuperUser, List<ObservableUser>>и Map<ObservableUser, List<SuperUser>>).Это позволит извлекать общие данные пользователя в O (1) и удалять отношения одним выстрелом.
  3. Вы можете добавить список пользователей, которые могут просматривать текущие данные пользователя (суперпользователи), в профиль пользователя (my_data_is_shared_with - list).) и повторять только их при удалении профиля
  4. При удалении пользователя сначала сделайте все его userdata = null.Затем реализуйте метод получения для суперпользователя, который будет возвращать data_shared_from_other_users_to_me.stream (). Filter (Object :: notNull) .collect (toList ()) и обновлять его в случае изменения (некоторые нулевые значения отфильтровываются)
...