La logique la plus simple façon de prendre votre question donnée serait juste:
StringBuffer which;
if (category.equals("game"))
which=gameList;
else if (category.equals("apps"))
which=appList;
else if (category.equals("movie"))
which=movieList;
else
... some kind of error handling ...
which.delete();
Comme Jon Skeet a noté, si la liste est grande ou vous dynamique voulez probablement utiliser une carte plutôt qu'un if/else/si. Cela dit, je vous encourage à utiliser une constante entière ou une énumération plutôt qu'une chaîne. Comme:
enum ListType {GAME, APP, MOVIE};
void deleteList(ListType category)
{
if (category==GAME)
... etc ...
Dans cet exemple simple, si c'est tout ce que vous pourriez faire avec, cela n'aurait pas beaucoup d'importance. Mais je travaille actuellement sur un système qui utilise des jetons String pour ce genre de chose partout, et cela crée beaucoup de problèmes.
Supposons que vous appeliez la fonction et que vous passiez par erreur dans "app" au lieu de "apps", ou "Game" au lieu de "game". Ou peut-être que vous pensez que vous avez ajouté la manipulation pour "chanson" hier, mais en fait vous êtes allé déjeuner à la place. Cela sera compilé avec succès, et vous n'aurez aucune idée qu'il y a un problème avant l'exécution. Si le programme ne lance pas d'erreur sur une valeur non valide mais prend une action par défaut, vous pourriez avoir un bug difficile à localiser. Mais avec une énumération, si vous épelez mal le nom ou essayez d'en utiliser un qui n'est pas défini, le compilateur vous avertira immédiatement de l'erreur. Supposons que certaines fonctions prennent des mesures spéciales pour certaines de ces options mais pas pour d'autres. Comme vous vous trouvez à écrire
if (category.equals("app"))
getSpaceRequirements();
et ce genre de chose. Alors quelqu'un lisant le programme voit une référence à "app" ici, une référence à "jeu" 20 lignes plus tard, etc. Il pourrait être difficile de déterminer quelles sont toutes les valeurs possibles. Une fonction donnée peut ne pas les référencer explicitement tous. Mais avec une énumération, ils sont tous parfaitement au même endroit.
Il n'est pas clair sur ce que vous essayez de faire mais pourquoi ne pouvez-vous pas utiliser Map pour cela? –
Dieu qui était rapide. Il ne m'est pas venu à l'esprit que je pouvais utiliser une carte.Merci à tous, toutes les réponses sont vraiment utiles !!! – Andrei