Diverses choses comme les indicateurs de bits en Java

Quel est le bit flag?

Veuillez consulter le lien ci-dessous car une personne détaillée l'a déjà écrit. Gestion des indicateurs par opération bit La gestion des indicateurs de jeu est efficace et simple grâce à l'arithmétique binaire

De quoi veux-tu parler

Je veux parler.

Le reste est du code

int

    //Définition.
    //Vous pouvez l'écrire librement, mais si vous l'écrivez par opération de décalage, vous pouvez voir la valeur à définir ensuite en un coup d'œil.
    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>
     *Comment écrire des commentaires que j'ai vus dans le Framework Android.
     *Si vous écrivez la valeur à définir ensuite comme ça, c'est beau.
     */


     //Créer.
     int flags = COM_LOLI | COM_SIS;

     //Drapeau.
     flags |= COM_MOM;

     //Drapeau vers le bas.
     flags &= ~COM_SIS;

     //Vérifiez le drapeau.
     boolean isOn = (flags & COM_LOLI) != 0;

     //Au moins 101010 lors de la sortie des journaux...Sortir au format.
     Integer.toBinaryString(flags);

    /**
     *La création d'une méthode de sortie de journal est difficile à gérer.
     */
    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

    //Il existe également un substitut à BitSet.
    BitSet bitSet = new BitSet();

    //Drapeau.
    bitSet.set(2);

    //Drapeau vers le bas.
    bitSet.clear(1);

    //Vérifiez le drapeau.
    boolean isOn = bitSet.get(3);

    //Mais c'est une classe utilisée lors de l'exécution sérieuse d'opérations sur les bits
    //C'est un peu difficile à utiliser comme drapeau.
    //J'étais heureux s'il y avait toInteger ou toLong
    //C'est peut-être parce que le tableau de bits de longueur variable qui est le but de la classe ne peut pas être garanti.

EnumSet


    /**
     *Définissez d'abord enum.
     */
    enum Complex {
        LOLI("Woooooooooooo"),
        MOM("Maman!"),
        SIS("Il y a 12 personnes!");

        public final String cry;

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

    //Créer.
    EnumSet<Complex> flags = EnumSet.of(Complex.LOLI, Complex.SIS);

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

    //Drapeau vers le bas.
    flags.remove(Complex.SIS);

    //Vérifiez le drapeau.
    boolean isOn = flags.contains(Complex.SIS);

    //Boucle sur tout l'élément
    for (Complex complex : Complex.values()) {
        Log.d("allCry", complex.cry);
    }

    //Pratique pour boucler ou faire pivoter avec uniquement l'élément actuel
    for (Complex complex : flags) {
        Log.d("limitedCry", complex.cry);
    }

    //Informations sur "ce qu'il faut faire si l'indicateur est activé"
    //Très pratique car il peut être retiré immédiatement

Conclusion

À moins que vous n'ayez une raison de le mettre dans et hors de la base de données tel quel avec speed, memory save ou int, vous devriez utiliser EnumSet. En ce qui concerne la vitesse, EnumSet a également été écrit en Java efficace pour dire qu'il était assez rapide.

Aussi, le gars qui a défini la constante de l'indicateur int qui représente le même état dans * diverses classes * * dans une notation de base différente *, ** monsieur !! **

Recommended Posts

Diverses choses comme les indicateurs de bits en Java
Divers threads en java
Implémentation d'une fonction similaire en Java
Implémenter quelque chose comme une pile en Java
Traitement parallèle et parallèle dans divers langages (édition Java)
Changements dans Java 11
Janken à Java
Taux circonférentiel à Java
FizzBuzz en Java
Points à connaître avec Java Equals
Je veux faire quelque chose comme "cls" en Java
Points à surveiller dans le développement futur de Java
[Java] Points à noter sur l'inférence de type étendue dans Java 10
Lire JSON en Java
Faites un blackjack avec Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Diverses pensions au Japon
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Implémentation du tri de tas (en java)
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Java aléatoire, divers traitements
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Ce que vous utilisez souvent lorsque vous faites du développement Web avec Java
Éléments à prendre en compte lors de l'écriture de code en Java