2016-07-22 37 views
0

我有一個將BiSet對象作爲參數的函數。我有以下獲取BiSet實例的長度

public static void(String [] args) 
{ 
    BitSet test = new BitSet(15); 

    Store(test); 
} 

public void Store (BitSet a) 
{ 
    boolean [] temp = new boolean[a.length()](); 
    System.out.println(temp.length); 
} 

的問題是,我的臨時或長度爲64。我怎樣才能像我傳遞給函數存儲對象實例測試的實際長度(15)?

+0

您的'BitSet'可能沒有15位的長度。 ['新的BitSet(15)'](// docs.oracle.com/javase/8/docs/api/java/util/BitSet.html#BitSet-int-)確保它可以保存15位。 – bradimus

+0

什麼是「實際長度」,它與長度有什麼不同? BitSet沒有明確的大小;它只能報告設置的最高位。 – VGR

+0

是的,但是當我有temp.length,我有64而不是15.我可以設置第10位,但仍然想要長度爲15位(我可以設置其他人) – user3841581

回答

2

你不能。該constructor documentation說:

創建一個位set,它的初始大小足以通過nbits-1明確表示的範圍內0與指數位。

不能保證初始尺寸不會比請求的尺寸大。實際上,nbits在構造函數完成時會丟失。

但真的沒有理由你應該需要在真正的代碼中的初始大小。

+0

如果這是不可能的,是否有任何其他數據結構,我可以使用和我可以有效地應用(設置,或,和,XOR)(我想在C#中的BitArray的東西) – user3841581

+0

@ user3841581你可以使用一個簡單的'int'或'long'。但你不會得到15位。目前還不清楚你爲什麼要這麼做。 – shmosel

+0

這個問題沒有得到15位,它有一個布爾數組,我可以高效地執行我前面提到的操作高效的方式 – user3841581