Nemozem uz priamove volat computeIfAbsent ja v danej triede namiesto obalovania dalsim objektom?
Můžete, ale pak musíte zajistit, že se prvky do mapy budou vkládat vždy správným voláním
computeIfAbsent, nikdo nikdy nezavolá třeba
put nebo jinou metodu pro přidání prvku do mapy. Než to hlídat na všech místech, kde by se to mohlo použít, je lepší tu mapu zapouzdřit do vlastního objektu, ze kterého se vystaví jenom metoda pro přidání hodnoty do mapy, a ta metoda už si sama zajistí, aby to přidání proběhlo správně. To je přesně důvod, proč se používá OOP.
S datami sa bude pracovat nasledovne:
Uzivatel A spusti aplikaciu, cim sa vytvori zaznam, kde key bude nejake id uzivatela, a nejake metada sa ulozia do Listu. Problem vsak je, ak otvori danu aplikaciu ten isty uzivatel na novej karte, v novom okne, casom mozno pribudne iny typ aplikacie, takze uzivatel bude prihlaseny na viacerych miestach naraz, co opat vyvola ulozenie metadat na zaklade id uzivatela do mapy. Preto metadata treba ukladat do kolekcie.
Taktiez moze nastat situacia, kedy uzivatel B, spusti nejaku akciu, ktora potrebuje metada uzivatela A, ta akcia pouzije vsetky metada priradene ku klucu uzivatela A, v iteracii nad kazdym zaznamom vykona nejaku operaciu, a nasledne sa z mapy odmaze kluc aj s metadatami uzivatela A.
Používat na tohle list mi tedy připadá dost divoké. Spíš bych do té mapy dával vlastní objekt představující přihlášeného uživatele, který bude poskytovat vlastní služby – vyhledání metadat pro danou aplikaci, odhlášení od aplikace apod. Protože třeba to procházení listu není atomická operace, a když k tomu budete přistupovat z více vláken, může se vám stát, že z jednoho vlákna ten prvek z listu smažete, ale v druhém vlákně ten prvek třeba budete modifikovat. List se tím nepoškodí a nakonec z něj ten prvek bude smazán, ale je otázka, zda je správné chování aplikace, která jeden záznam zároveň mění i maže.
Trosku som sa vam pokusil objasnit pre aku pracu potrebujem dany List, je pre tento pripad vhodny spominany CopyOnWriteArrayList alebo siahnut po niecom inom ?
To pořád závisí na poměru počtu zápisů k počtu čtení těch listů a třeba také na jejich velikosti. Což z toho vašeho popisu není patrné. Ale podle toho, jak jste to popsal, bych tam vůbec nedával list.