Sauber geht das wie bereits gesagt nur, wenn du eine Eigene Klasse erstellst, welche die eigentlichen Daten (als z.B. List) enthält und zusätzlich die UNterscheidungskriterien (z.B. Name). Eingeschränkt auch mit einer Map, aus felxibilitätsgründen würde ich aber eher direkt die eigene Klasse wählen, da später noch zusätzliche Unterscheidungskriterien hinzukommen können.
Was Variablennamen betrifft, so sind sie Schall und Rauch. Diese dienen ausschließlich dem Programmierer und werden von den Compilern ohnehin wegoptimiert! Im späteren Programmcode (bytecode oder binär ist egal) stehen keine Variablennamen mehr sondern nur noch Referenzen oder Adresse ect. Daher lässt sich dieser auch nicht zur Laufzeit ermitteln, da die Info lange weg ist.