[英]Is it possible to declare an 1-bit variable in Java?
我的算法使用了一個龐大的boolean
數組,正如我所教導的,每個布爾變量需要1個字節。 無論如何都要聲明一個布爾數組並減少內存使用量,因為我正在處理手機環境。
編輯:我的朋友和我正在討論BitSet是否比普通布爾數組慢。 請澄清一下。 該算法仍然需要性能作為最佳需求。
您也可以使用EnumSet 。 這允許您使用命名位,並且比使用使用索引位的BitSet更友好。
用於枚舉類型的專用Set實現。 枚舉集中的所有元素必須來自單個枚舉類型,該類型在創建集時顯式或隱式指定。 枚舉集在內部表示為位向量。 這種表現非常緊湊和高效。 這個類的空間和時間性能應該足夠好,以允許它作為傳統的基於int的“位標志”的高質量,類型安全的替代品。 如果它們的參數也是枚舉集,即使批量操作(例如containsAll和retainAll)也應該非常快速地運行。
例如
BitSet bs = new BitSet(4);
bs.set(1); // READY
bs.set(3); // LARGE_FLAG
boolean largeFlag = bs.get(1); // LARGE_FLAG
System.out.println("Using BitSet: "+bs);
EnumSet<Settings> settings = EnumSet.noneOf(Settings.class);
settings.add(Settings.READY);
settings.add(Settings.LARGE_FLAG);
boolean largeFlag2 = settings.contains(Settings.LARGE_FLAG);
System.out.println("Using EnumSet: "+settings);
版畫
Using BitSet: {1, 3}
Using EnumSet: [READY, LARGE_FLAG]
如果合適,恕我直言EnumSet更清晰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.