當前位置:首頁 » 操作系統 » javabitset源碼

javabitset源碼

發布時間: 2022-10-28 16:18:24

A. java bitset or怎麼回事

JDK選擇long數組作為BitSet的內部存儲結構是出於性能的考慮,因為BitSet提供and和or這種操作,需要對兩個BitSet中的所有bit位做and或者or,實現的時候需要遍歷所有的數組元素。使用long能夠使得循環的次數降到最低,所以Java選擇使用long數組作

B. java.lang.IndexOutOfBoundsException: Index: 5, Size: 5怎麼解決

<p style="font-size: 16px;" 用style屬性。

C. JAVA 假如String"01010" 我要怎樣把它轉成bitset

publicBitSettoBitSet(Strings){
intlen=s.length();
BitSetbs=newBitSet(len);
for(inti=0;i<len;i++){
if(s.charAt(i)=='1')
bs.set(i);
}
returnbs;
}
publicStringtoString(BitSetbs){
intlen=bs.length();
StringBufferbuf=newStringBuffer(len);
for(inti=0;i<len;i++)
buf.append(bs.get(i)?'1':'0');
returnbuf.toString();
}

D. 在java中能直接把BitSet的對象直接輸入到二進制文件中嗎,用哪個流啊

package com.tuz;

import java.io.*;

public class MyTest {
public static void main(String[] args) {

String s = "010101";
int i = Integer.parseInt(s, 2);//按照2進制提取為十進制
try {
DataOutputStream out=
new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("Data")));//Data是文件的名字
out.writeByte(i);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}

E. 為什麼Java中的BitSet使用long數組做內部存儲,而不使用int數組...

JDK選擇long數組作為BitSet的內部存儲結構是出於性能的考慮,因為BitSet提供and和or這種操作,需要對兩個BitSet中的所有bit位做and或者or,實現的時候需要遍歷所有的數組元素。使用long能夠使得循環的次數降到最低,所以Java選擇使用long數組作為BitSet的內部存儲結構。

從數據在棧上的存儲來說,使用long和byte基本是沒有什麼差別的,除了編譯器強制地址對齊的時候,使用byte最多會浪費7個位元組(強制按照8的倍數做地址對其),另外從內存讀數組元素的時候,也是沒有什麼區別的,因為匯編指令有對不同長度數據的mov指令。所以說,JDK選擇使用long數組作為BitSet的內部存儲結構的根本原因就是在and和or的時候減少循環次數,提高性能。
作者:馬天笑
鏈接:http://www.hu.com/question/21061816/answer/17047941
來源:知乎

當對單個bit進行操作時,兩種存儲方式不會有太大的區別:首先計算bit所在的word,然後對word中對應的bit進行操作。當同時對多個bit進行操作時,long數組存儲方式可以帶來較大的新能提升。例如我們進行BitSet中的and, or, xor操作時,要對整個bitset中的bit都進行操作,需要依次讀出bitset中所有的word,如果是long數組存儲,我們可以每次讀入64個bit,而int數組存儲時,只能每次讀入32個bit。另外我們在查找bitset中下一個置為1的bit時,word首先會和0進行比較,如果word的值為0,則表示該word中沒有為1的bit,可以忽略這個word,如果是long數組存儲,可以一次跳過64個bit,如果是int數組存儲時,一次只能跳過32個bit。

作者:王強
鏈接:http://www.hu.com/question/21061816/answer/60149117
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

F. 有沒有比java.util.BitSet更好的實現

可以基本沒有java web項目能離開這個包...
軟體包 java.util 的描述 包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字元串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。 包規范 Collections Framework Overview Collections Framework Annotated Outline 相關文檔 有關概述、教程、示例、指南和工具文檔的信息,請參閱: Collections Framework Tutorial Collections Framework Design FAQ 從以下版本開始: JDK1.0 Java的實用工具類庫java.util包。在這個包中,Java提供了一些實用的方法和數據結構。例如,Java提供日期(Data)類、日歷(Calendar)類來產生和獲取日期及時間,提供隨機數(Random)類產生各種類型的隨機數,還提供了堆棧(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等類來表示相應的數據結構。 圖1.1給出了java.util包的基本層次結構圖。下面我們將具體介紹其中幾個重要的類。 ┌java.util.BitSet │java.util.Calendar │ └java.util.GregorianCalendar │java.util.Date │java.util.Dictionary │ └java.util.Hashtable │ └java.util.Properties │java.util.EventObject │java.util.ResourceBundle ┌普通類┤ ├java.util.ListResourceBundle │ │ └java.util.PropertyResourceBundle │ │java.util.Local │ │java.util.Observable │ │java.util.Random │ │java.util.StringTokenizer │ │java.util.Vector │ │ └java.util.Stack Java.util┤ └java.util.TimeZone │ └java.util.SimpleTimeZone │ ┌java.util.Enumeration ├接 口┤java.util.EventListener │ └java.util.Observer │ ┌java.util.EmptyStackException └異常類┤java.util.MissingResourceException │java.util.NoSuchElementException └java.util.TooManyListenersException

G. java bitset 最高多少位

publicstaticStringdo_post(Stringurl,List<NameValuePair>name_value_pair)throwsIOException{
Stringbody="{}";
DefaultHttpClienthttpclient=newDefaultHttpClient();
try{
HttpPosthttpost=newHttpPost(url);
httpost.setEntity(newUrlEncodedFormEntity(name_value_pair,StandardCharsets.UTF_8));
HttpResponseresponse=httpclient.execute(httpost);
HttpEntityentity=response.getEntity();
body=EntityUtils.toString(entity);
}finally{
httpclient.getConnectionManager().shutdown();
}
returnbody;
}
publicstaticStringdo_get(Stringurl)throwsClientProtocolException,IOException{
Stringbody="{}";
DefaultHttpClienthttpclient=newDefaultHttpClient();
try{
HttpGethttpget=newHttpGet(url);
HttpResponseresponse=httpclient.execute(httpget);
HttpEntityentity=response.getEntity();
body=EntityUtils.toString(entity);
}finally{
httpclient.getConnectionManager().shutdown();
}
returnbody;
}

H. java bitset size()

new一個BitSet(950)並不等於建立一個950大小的bs
只是說構建出來的bs初始大小至少能容納950個bit,大小永遠是系統控制的。而且他的大小是64的倍數,就算BitSet(1),他的大小也是64。

I. Java中BitSet是線程安全的么

不是線程安全的。沒有同步過

J. Java Bitset類位集合是什麼

此類實現了一個可變長的位向量。可以根據一個非負的索引來訪問每一個位,每個位的值都是一個 boolean值。

熱點內容
for循環sql語句 發布:2025-05-13 22:45:49 瀏覽:17
python實用代碼 發布:2025-05-13 22:19:41 瀏覽:843
dede資料庫的配置文件 發布:2025-05-13 22:19:08 瀏覽:966
給字元加密 發布:2025-05-13 22:12:32 瀏覽:972
資料庫系統實現答案 發布:2025-05-13 22:11:57 瀏覽:140
哪個軟體可以共存安卓 發布:2025-05-13 22:10:15 瀏覽:552
上傳宦妃天下野泉肉肉 發布:2025-05-13 22:10:10 瀏覽:408
洗眼睛解壓 發布:2025-05-13 21:58:28 瀏覽:272
c存儲指針 發布:2025-05-13 21:49:04 瀏覽:921
結繩編程軟體 發布:2025-05-13 21:49:03 瀏覽:851