Geeignetes Nachschlagewerk für int Werte

mage

Erfahrenes Mitglied
Hallo,

welche Collectionart wäre am besten geeignet für:
- eine Objektliste mit int Werten als Schlüssel
- die Liste besteht aus zirka 10 bis 100 Elementen
- es soll zügig nach dem Objekt über den zugehörigen Schlüssel gesucht werden

Was würdet ihr mir dafür empfehlen?
 
Hallo!

Das könntest du beispielsweise mit einer ganz normalen Map machen:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * @author Tom
 * 
 */
public class IntValueListMap {

    final static Random RANDOM = new Random();

    /**
     * @param args
     */
    public static void main(String[] args) {

        List<List<Integer>> lists = new ArrayList<List<Integer>>();
        Map<List<Integer>,String> map = new HashMap<List<Integer>,String>();
        for (int i = 0; i < 100; i++) {
            List<Integer> list = generateRandomList(10, 100);
            lists.add(list);
            String string = "A" + i;
            map.put(list,string);
            System.out.println("Created: " + string + ": " + list);
        }
        
        System.out.println("############################");
        Collections.shuffle(lists);
        for(List<Integer> list : lists){
            System.out.println("Retrieved: " + map.get(list) + " for list: " + list);
        }        
    }

    private static List<Integer> generateRandomList(int minLength, int maxLength) {
        int length = Math.max(minLength, RANDOM.nextInt(maxLength));
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i < length; i++) {
            list.add(RANDOM.nextInt());
        }
        return list;
    }

}

Schneller würde es aber gehen, wenn du statt der Listen int[] verwenden würdest und diese in einer angepassten (Hash)Map ablegst die Arrays.hashCode(...) zum berechnen des Schlüsselwerts benutzt.

Dabei musst du beachten das bei diesen Beispielen die Reihenfolge der Elemente innerhalb der Liste eine Auswirkung auf den aus der Liste berechneten Schlüsselwert hat...

Was hast du eigentlich damit machen?

Gruß Tom
 
Danke für die Antwort, sogar mit Codebeispiel :).

Es geht um das HTML rendern eines Kalenders.
Meine Einträge sind Resourcen (z.B. Besprechnungsräume, Beamer etc.), diese kommen alle aus einer Datenbank und haben daher eine eindeutige ID als Schlüssel vom Datentyp int.
Nun gibt es Verplanungen/Reservierungen von diesen Resourcen zu bestimmten Terminen.
Diese Reservierungen besitzen zur Zuordnung zu der Resource den Schlüssel, ganz Datenbankmässig.

Als Schritt bevor der Kalender gerendert wird, müssen die Reservierungen den entsprechenden Resourcen zugeordnet werden. Daher benötige ich ein Nachschlagewerk für die Resourcen.
Anmerken möcht ich hierzu, dass sich das sicherlich einfacher über die Datenbankabfrage lösen lassen könnte, allerdings hab ich kein Zugriff auf das Datenbankbackend und bekomme nur die Daten in zwei Listen.

Leider funktioniert Dein Beispiel bei mir nicht, da Eclipse sich an den '<>' verschluckt und meldet das es erst ab source level 5 funktionieren soll.
Eclipse und das JDK in Version 5 hab ich vor zwei Tagen frisch heruntergeladen und installiert. Hab auch nichts gefunden, wo ich irgenwas in der Richtung umstellen kann.
 
Hallo!

Leider funktioniert Dein Beispiel bei mir nicht, da Eclipse sich an den '<>' verschluckt und meldet das es erst ab source level 5 funktionieren soll.
Eclipse und das JDK in Version 5 hab ich vor zwei Tagen frisch heruntergeladen und installiert. Hab auch nichts gefunden, wo ich irgenwas in der Richtung umstellen kann.
Project Properties -> Java Compiler -> Compiler Compliance Level -> Java 5
oder
Window -> Preferences -> Java -> Compiler -> Compiler Compliance Level -> Java 5

Gruß Tom
 
Zurück