# Map / Tupel aus mehreren Elementen?



## Windwalker (3. Nov 2008)

Hallo!

Ich schreibe ein Caching-Varfahren, bei dem zu jeder Datei ein paar Werte gespeichert werden sollen, z.B.
(Datei, Alter des letzten Zugriffs, Zugriffs-Zähler).

Gibt es in Java so etwas ähnliches wie eine Map, jedoch dass man nicht nur zwei Einträge (Key, Value) hat, die jeweils gespeichert werden, sondern mehr als zwei?
So dass es z.B. eine Map gibt mit Belegungen (Key, Value1, Value2, ..., ValueN) ?


Danke für die Hilfe,
Sascha.


----------



## SlaterB (3. Nov 2008)

und was soll in der Map beim get zurückgegeben werden?

es gibt zwar
http://commons.apache.org/collections/api-3.2/org/apache/commons/collections/map/MultiValueMap.html
(nicht Standard-API)

aber allzuviel Sinn kann ich da nie erkennen,
packe die Values in eine Liste oder ein Objekt einer eigenen Klasse
oder baue sonst was individuelles,

in solchen speziellen Situationen kann eine Standard-Bibliothek weniger helfen


----------



## Windwalker (3. Nov 2008)

SlaterB hat gesagt.:
			
		

> und was soll in der Map beim get zurückgegeben werden?



Die Caching-Werte der jeweiligen Datei, also bei get(file) -> (letzter Zugriff, Zugriffe insgesamt)



			
				SlaterB hat gesagt.:
			
		

> es gibt zwar
> http://commons.apache.org/collections/api-3.2/org/apache/commons/collections/map/MultiValueMap.html
> (nicht Standard-API)
> 
> ...



In anderen Programmiersprachen sind solche Konzepte auch implementiert.

Aber wie du selbst sagst, es gibt ja erweiternde Bibliotheken.
Ich habe z.B. nun auch
http://javatuple.com
gefunden.


----------



## musiKk (3. Nov 2008)

Uhm... ist das was anderes, als einen Key auf eine List mit den Values zu mappen? Wozu braucht man da groß Bibliotheken?


----------



## SlaterB (3. Nov 2008)

für die Typsicherheit durch Generizität,

ich habe selber auch eine Klasse


```
public class Tuple<T extends Comparable, U>
    implements Comparable<Tuple<T, U>>
{
    private T key;
    private U value;

..
```

eine Bibliothek dafür ist aber wirklich übertrieben, die paar Minuten coden..


----------



## nouse (3. Nov 2008)

Wenn du eine DTO Klasse erstellst, welche alle diese Attribute beinhaltet, hättest du das Problem doch auch gelößt


```
public class DateiInfoDTO {


   Date erstellDatum;
   Date aenderungsDatum;

 ...

}
```

und diese dann in die HashMap samt key.


----------



## musiKk (3. Nov 2008)

Aber Typsicherheit habe ich doch auch bei

```
Map<String,List<Integer>> ...
```
oder welche Kombination man auch immer will.


----------



## SlaterB (3. Nov 2008)

mehrere Values "Datei, Alter des letzten Zugriffs, Zugriffs-Zähler" passen nicht in List<Integer> oder sonst irgendeine Liste wenn man sich nicht schon sehr Mühe gibt


----------



## musiKk (3. Nov 2008)

Oh. Ich habe wohl gleich den ersten Post nicht gründlich genug gelesen. Da wäre ich auch für deinen ursprünglichen Vorschlag, eine eigene Klasse zu erstellen.


----------

