list foreach - Esiste una classe come Dictionary<>in C#, ma solo per le chiavi, nessun valore?





get value (2)


Prova a utilizzare la classe HashSet<T> .

Edit: Ho passato molto tempo facendo esattamente quello che hai fatto fino a quando mi sono imbattuto in questa lezione mentre leggevo un blog.

Immagino che un altro modo per esprimere questa frase sia "Esiste una classe come List<> in C #, ma ottimizzata per verificare se è presente un determinato valore?" Sono sicuro che per un piccolo insieme di valori List<>.Contains probabilmente sarebbe bene, ma cosa succede se ho un insieme di migliaia o milioni di valori e volevo scoprire se ci fosse un certo valore?

Ho implementato questo tipo di cose in passato creando un Dictionary<object, int> e impostando il valore su 0 per ogni chiave, ma questo sembra davvero goffo. E ora c'è , dove la mia stupida domanda può essere trasformata in istruzione per migliaia (dozzine, anche). Quindi eccolo!

Non sono nemmeno sicuro di quale sarebbe il nome di una classe del genere, a parte forse Set, quindi le ricerche sull'argomento sono state ... sfidanti :)




Crea un comparatore personalizzato e usalo mentre crei un nuovo oggetto TreeMap.

class MyComparator implements Comparator<Object> {

    Map<String, Integer> map;

    public MyComparator(Map<String, Integer> map) {
        this.map = map;
    }

    public int compare(Object o1, Object o2) {

        if (map.get(o2) == map.get(o1))
            return 1;
        else
            return ((Integer) map.get(o2)).compareTo((Integer)     
                                                            map.get(o1));

    }
}

Usa il codice seguente nella tua funzione principale

    Map<String, Integer> lMap = new HashMap<String, Integer>();
    lMap.put("A", 35);
    lMap.put("B", 75);
    lMap.put("C", 50);
    lMap.put("D", 50);

    MyComparator comparator = new MyComparator(lMap);

    Map<String, Integer> newMap = new TreeMap<String, Integer>(comparator);
    newMap.putAll(lMap);
    System.out.println(newMap);

Produzione:

{B=75, D=50, C=50, A=35}




c# list dictionary key