mercredi 1 novembre 2017

When do I keep a map

There is one question that I often ask myself while designing a program, and I am never quite sure how to answer it.

Let's say I have an object with multiple fields, amongst which there is one serving as the identifier to that specific object. Let's also say that I need to keep track of a List of such objects somewhere else.

I now have three, and probably even more, options on how to go about it:

  1. Have my object contain its own identifier, and all its other fields. I now use a simple array (or whatever simple list collection) of my objects where I need it. When I am looking for one specific object, I loop through my list and check for identifier equality.

Pros: 1. "Clarity" for each object instance. 2.? Cons: Manipulating a collection of these objects gets annoying

  1. Have my object contain all fields beside its identifier. I now use a Map with identifier as key, and object as value. When looking for one specific object, I just lookup the identifier in the map.

Pros: easy lookups and insertions,? Cons: object instance itself doesnt know what it is,?

  1. Combination of both: use a map with identifier as key and object having its own identifier as a field as value.

Pros: mentioned above. Cons: looks redundant to me.

What situations would call for what? Let's use the standard hello-world example of networking for example, a chat server: how would I handle multiple "groups/channels" people are in? What about other applications?

Aucun commentaire:

Enregistrer un commentaire