Verschiedene Dinge wie Bitflags in Java

Was ist die Bitflagge?

Bitte beachten Sie den Link unten, da eine detaillierte Person ihn bereits geschrieben hat. Flagverwaltung durch Bitoperation Die Verwaltung von Spielflaggen ist effizient und einfach mit Bit-Arithmetik

Worüber möchten Sie sprechen?

Ich möchte reden.

Der Rest ist Code

int

    //Definition.
    //Sie können es frei schreiben, aber wenn Sie es durch Verschieben schreiben, können Sie den als nächstes zu definierenden Wert auf einen Blick sehen.
    final static int COM_LOLI = 1 << 0;
    final static int COM_MOM = 1 << 1;
    final static int COM_SIS = 1 << 2;

    /**
     * next flag:0x0008
     * <p>
     *Wie schreibe ich Kommentare, die ich im Android Framework gesehen habe.
     *Wenn Sie den als nächstes zu definierenden Wert so schreiben, sieht er gut aus.
     */


     //Erstellen.
     int flags = COM_LOLI | COM_SIS;

     //Flagge.
     flags |= COM_MOM;

     //Fahne runter.
     flags &= ~COM_SIS;

     //Überprüfen Sie die Flagge.
     boolean isOn = (flags & COM_LOLI) != 0;

     //Mindestens 101010 bei der Ausgabe von Protokollen...Im Format von.
     Integer.toBinaryString(flags);

    /**
     *Das Erstellen einer Methode für die Protokollausgabe ist schwierig zu verwalten.
     */
    static String decodeFlags(final int flags) {
        StringBuilder builder = new StringBuilder();

        if ((flags & COM_LOLI) != 0) {
            builder.append("LOLI").append(" ");
        }
        if ((flags & COM_MOM) != 0) {
            builder.append("MOM").append(" ");
        }
        if ((flags & COM_SIS) != 0) {
            builder.append("SIS").append(" ");
        }
        return builder.toString();
    }

BitSet

    //Es gibt auch einen Ersatz für BitSet.
    BitSet bitSet = new BitSet();

    //Flagge.
    bitSet.set(2);

    //Fahne runter.
    bitSet.clear(1);

    //Überprüfen Sie die Flagge.
    boolean isOn = bitSet.get(3);

    //Dies ist jedoch eine Klasse, die verwendet wird, wenn Bitoperationen ernsthaft ausgeführt werden
    //Es ist etwas schwierig, es als Flagge zu verwenden.
    //Ich war froh, wenn es toInteger oder toLong gab
    //Dies kann daran liegen, dass das Bitarray mit variabler Länge, das der Zweck der Klasse ist, nicht garantiert werden kann..

EnumSet


    /**
     *Definieren Sie zuerst die Aufzählung.
     */
    enum Complex {
        LOLI("Woooooooooooo"),
        MOM("Mutter!"),
        SIS("Es sind 12 Leute!");

        public final String cry;

        Complex(final String cry) {
            this.cry = cry;
        }
    }

    //Erstellen.
    EnumSet<Complex> flags = EnumSet.of(Complex.LOLI, Complex.SIS);

    //Flagge.
    flags.add(Complex.MOM);

    //Fahne runter.
    flags.remove(Complex.SIS);

    //Überprüfen Sie die Flagge.
    boolean isOn = flags.contains(Complex.SIS);

    //Schleife auf das ganze Element
    for (Complex complex : Complex.values()) {
        Log.d("allCry", complex.cry);
    }

    //Praktisch, um nur mit dem aktuellen Element zu schleifen oder zu drehen
    for (Complex complex : flags) {
        Log.d("limitedCry", complex.cry);
    }

    //Informationen zu "Was tun, wenn das Flag gesetzt ist?"
    //Sehr praktisch, da es sofort herausgenommen werden kann

Fazit

Sie sollten EnumSet verwenden, es sei denn, Sie haben einen Grund, es mit Geschwindigkeit, Speichereinsparung oder Int in die Datenbank ein- und auszuschalten. In Bezug auf die Geschwindigkeit wurde EnumSet auch in Effective Java geschrieben, dass es schnell genug war.

Auch der Typ, der die Konstante des int-Flags definiert hat, das den gleichen Zustand in * verschiedenen Klassen * * in unterschiedlicher Basisnotation darstellt *, ** sir !! **

Recommended Posts

Verschiedene Dinge wie Bitflags in Java
Verschiedene Threads in Java
Implementierung einer ähnlichen Funktion in Java
Implementieren Sie so etwas wie einen Stack in Java
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Änderungen in Java 11
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
Punkte, die bei Java beachtet werden müssen, sind gleich
Ich möchte so etwas wie "cls" in Java machen
Dinge, auf die Sie bei der zukünftigen Java-Entwicklung achten sollten
[Java] Hinweise zur Typinferenz in Java 10
Lesen Sie JSON in Java
Machen Sie einen Blackjack mit Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Verschiedene Renten in Japan
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Java zufällig, verschiedene Verarbeitung
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Dinge, die Sie häufig bei der Webentwicklung mit Java verwenden
Dinge, die Sie beim Schreiben von Code in Java beachten sollten