EnumSet 的妙用,代替二進(jìn)制串

EnumSet 的妙用,代替二進(jìn)制串。

有時(shí)候需要用二進(jìn)制串作為多個(gè)標(biāo)識(shí)位,例如 1010,每一位分別代表不同的含義,此時(shí)對(duì)應(yīng)位數(shù)的新增刪除等操作麻煩且不直觀,建議用EnumSet代替。不多說,代碼如下:

/**
 * 文本
 * 樣式包括粗體,斜體,下劃線,中劃線等多種情況,每種情況可以并存
 * 用 EnumSet 代替字符串處理
 */
public class Text {

    private EnumSet<Style> set = EnumSet.noneOf(Style.class);

    private String[] texts = new String[Style.values().length];

    public Text() {
        for (int i = 0; i < texts.length; i++) {
            texts[i] = "0";
        }
    }

    /**
     * 樣式
     */
    public enum Style {
        BLOD(0),
        ITALIC(1),
        UNDERLINE(2),
        MIDDLELINE(3),
        ;

        private int val;

        Style(int i) {
            this.val = i;
        }

        public int val() {
            return val;
        }
    }

    public void add(Style... styles) {
        Arrays.asList(styles).forEach(set::add);
    }

    public void remove(Style... styles) {
        Arrays.asList(styles).forEach(set::remove);
    }

    public boolean contains(Style style) {
        return set.contains(style);
    }

    /**
     * 反序算位數(shù),方便以后新增位
     * 
     * @return
     */
    public String get() {
        set.forEach(e -> {
            texts[e.val()] = "1";
        });
        return StringUtils.join(Lists.reverse(Arrays.asList(texts)), "");
    }

    public static void main(String[] args) {
        Text text = new Text();
        text.add(Style.BLOD, Style.ITALIC);

        System.out.println(text.contains(Style.BLOD));
        System.out.println(text.get());
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容