Come assegnare alle stringhe un valore numerico all'interno di Java [chiuso]

-2

Quindi sto facendo questo progetto su Rock Paper Scissors, qualcosa con 5.059 combinazioni, ma questo è oltre il punto. Nel mio caso, essendo un principiante, mi chiedevo se fosse possibile rendere ogni opzione una stringa e successivamente convertire quelle stringhe in numeri interi. O come diceva Candy Orange, una mappa hash sarebbe più efficiente?

    
posta Chase Hughes 15.09.2016 - 18:20
fonte

1 risposta

1

Le enumerazioni possono farlo bene, così come una mappa hash. Dipende quando si desidera creare la relazione. Scegli enumi per la progettazione. Hash per tempo di esecuzione.

Sì, l'implementazione di una tabella hash è possibile in Java. Puoi anche utilizzare quello già implementato in java.util chiamato HashTable . Ma a meno che tu non stia facendo cose funky multi-thread ti consiglio HashMap , dallo stesso pacchetto, che è lo stesso tranne che non sincronizzato e quindi è un po 'più veloce.

Ricorda che i programmatori non sono un servizio di scrittura del codice, ma ero annoiato, quindi ho intenzione di portare a casa il mio punto con 60 linee che usano entrambe le idee in un glorioso adattamento dell'ingegneria.

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class StringsToNumbers {
    public static void main(String args[]) {

        List<Converter> converters = Arrays.asList(new MapConverter(),new EnumConverter());
        List<String> numerals = Arrays.asList("One", "Two", "Three");

        for (Converter con : converters) {
            for (String num : numerals) {
                System.out.print(con.convert(num));
            }
            System.out.println();
        }
    }
}

interface Converter {
    int convert(String str);
}

// Assigned at run time
class MapConverter implements Converter {
    public int convert(String str){
        Map<String, Integer> s2i = new HashMap<>();
        s2i.put("One",1);
        s2i.put("Two",2);
        s2i.put("Three",3);

        return s2i.get(str);
    }
}

// Assigned at design time
enum StrToNum {
    One(1), Two(2), Three(3);

    int value;
    StrToNum(int v) {
        value = v;
    }
    int getValue() {
        return value;
    }
}

class EnumConverter implements Converter {
    public int convert(String str) {
        return StrToNum.valueOf(str).getValue();
    }
}

Visualizza

123
123

Nota come MapConverter.convert() ricostruisce completamente inefficientemente il HashMap ogni volta che viene chiamato. Questo è solo per mostrare che diversamente da Enum la mappa può essere cambiata in fase di esecuzione. Una HashMap potrebbe essere utilizzata anche in caso di design time se la abbiamo costruita in fase di costruzione.

    
risposta data 15.09.2016 - 18:25
fonte

Leggi altre domande sui tag