Time of Update: 2018-12-05
散列計算就是計算元素應該放在數組的哪個元素裡。準確的說是放到哪個鏈表裡面。按照Java的規則,如果你要想將一個對象放入HashMap中,你的對象的類必須提供hashcode方法,返回一個整數值。比如String類就有如下方法: [java] view plaincopyprint? public int hashCode() { int h = hash; int len = count; if (h == 0 && len
Time of Update: 2018-12-05
翻譯自:http://docs.oracle.com/javase/tutorial/collections/intro/index.html一個集合,即collection,有時也被稱為一個容器,只是將多個元素聚整合一個單元。Collections常被用來儲存、檢索、操縱聚集資料以及聚集資料間的通訊。一般來說,Collections表示一組形成自然集合的資料項目,比如一手撲克牌、一個信箱(由很多信組成)或者電話簿。
Time of Update: 2018-12-05
現在,有了hash code,來考慮如何計算放入數組的位置。hash code值通常會很大,但是數組的大小有限,預設只有16,大的也不能超過2的30次方。所以,用模運算來保證在數組大小範圍內是合理的,比如:index = hash code % array size.不過這有點慢,JDK採用了更快的演算法。這個更快的演算法源於一個數學規律,就是如果size是2的N次方,那麼數X對size的模運算結果等價於X和size-1的按位與運算,也就是 X % size <=> X &
Time of Update: 2018-12-05
翻譯自:http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html核心集合介面封裝了不同類型的集合,如所示。這些介面使得我們可以操作集合而不必關心它們的具體實現細節。核心集合介面是Java集合架構的基礎。正如我們可以從看到的,核心集合介面形成了階層:Set是一種特殊的集合,而一個SortedSet是一種特殊的Set,以此類推。注意的階層中包含兩棵獨立的樹
Time of Update: 2018-12-05
文章目錄 擷取元素 擷取元素有了前面的分析,擷取元素的邏輯就非常清晰。首先,調用者傳遞key,從key的hashCode方法獲得值後,調用hash函數做一些低位置換,保證hash值的均勻分布,之後和size-1按位與後得到數組的位置。然後取出對應位置的鏈表,遍曆該鏈表,尋找hash值相等,並且key的引用或者值相等的對象,然後返回。代碼見下面: [java] view plaincopyprint? public V get(Object
Time of Update: 2018-12-05
Java的HashMap非常的常用,本篇研究它的實現演算法,最後希望計算出記憶體佔用,效能的量化資料,然後得出什麼時候使用HashMap,什麼時候不能濫用的結論。HashMap實際上是一個數組,數組裡面的每個元素都是一個鏈表。每個元素在通過put方法放入HashMap中的時候,要按照如下步驟進行:1.根據該元素自身提供的hashcode計算出散列值,該散列值就是數組的下標2.將新元素放入該數組位置的鏈表中先來看一下數組的定義: [java] view plaincopyprint? /**
Time of Update: 2018-12-05
翻譯自:The Set
Time of Update: 2018-12-05
集合交集在數學上面的定義是:A 和 B 的交集寫作 "A ∩B"。 形式上:x 屬於 A ∩ B 若且唯若x 屬於 A, 且x 屬於 B。在Java集合類List裡面也提供了一個內建的方法,求兩個List集合的交集。方法如下:public boolean retainAll(Collection<?> c)子類必須實現該方法。下面是以子類ArrayList為例的一段代碼: view source print?01public class ListDemo {02 03 /**0
Time of Update: 2018-12-05
翻譯自:The Collection Interface一個集合表示一組對象。Collection介面被用來傳遞對象的集合,具有最強的通用性。例如,預設所有的集合實現都有一個構造器帶有一個Collection型別參數。這個構造器被稱作轉換構造器,用指定集合的元素來初始化新集合,而不管指定集合實現的是哪個集合介面和實作類別型。換句話說,這個構造器使得我們可以轉化集合的類型(比如List到Set,Set到List)。設想一下,假如你有一個Collection<String>
Time of Update: 2018-12-05
android 開發中遇到了這樣的異常,在2.3以下版本不會出現,在2.3及以上就會報出原來的代碼如下 reader = new BufferedReader(inputStream, 10240); while ((oneLine = reader.readLine()) != null) { buffer.append(oneLine); }解決方案:改用下面的方法從網路中讀取資料 int count = 1024; int result =
Time of Update: 2018-12-05
通常大型應用項目的效率瓶頸一般都是在資料庫總結幾點資料庫效率最佳化方面應該注意的問題1、 避免使用Hibernate架構用Hibernate一次性進行5萬條左右資料的插入,若ID使用sequence方式產生,Hibernate將分5萬次從資料庫取得5萬個 sequence,構造成相應對象後,再分五萬次將資料儲存到資料庫。花了我十分鐘時間。主要的時間不是花在插入上,而是花在5萬次從資料庫取
Time of Update: 2018-12-05
有時候擷取目前時間時常常會有8個小時的差距,後來發現擷取目前時間,Date now=new Date();now.getTime();返回的long值正確的,但是我一旦把now解析為String字串時就會少8小時,所以設定下面的時區。現在留著以防以後再用。 private long getNowTime(){ DateFormat format=getDateFormat(); Date now=new Date(); Log.d("joey","---
Time of Update: 2018-12-05
windows xp下配置JDK環境變數: 1.安裝JDK,安裝過程中可以自訂安裝目錄等資訊,例如我們選擇安裝目錄為D:\Program Files\Java; 2.安裝完成後,右擊“我的電腦”,點擊“屬性”; 3.選擇“進階”選項卡,點擊“環境變數”; 4.在“系統變數”中,設定3項屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點擊“編輯”,不存在
Time of Update: 2018-12-05
Java獲得螢幕解析度原始碼如下: 1 public class Screen 2 { 3 public static void main(String[] args) 4 { 5 int screenWidth=((int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width); 6 int screenHeight =
Time of Update: 2018-12-05
1.JasperReports是一個基於Java的開源報表工具,它可以在Java環境下像其他IDE報表工具一樣來製作報表。JasperReports支援PDF、HTML、XLS、CSV和XML檔案輸出格式。JasperReports是當前Java開發人員最常用的報表工具。2.Pentaho是一個以工作流程為核心的、強調面向解決方案而非工具組件的BI套件,整合了多個開源項目,目標是和商業BI相抗衡。它偏向於與商務程序相結合的BI解決方案,側重於大中型公司專屬應用程式。它允許商務分析人員或開發人員建
Time of Update: 2018-12-05
代碼如下: 1 import net.sourceforge.pinyin4j.PinyinHelper; 2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; 5
Time of Update: 2018-12-05
原始碼如下: 1 import java.io.File; 2 public class SpaceChecker 3 { 4 public static void main(String [] args) 5 { 6 File[] roots=File.listRoots(); 7 for(File _file:roots) 8 { 9
Time of Update: 2018-12-05
1.Java計算某一月份的最大天數1 Calendar time=Calendar.getInstance();//使用預設時區和語言環境獲得一個日曆2 time.clear();3 time.set(Calendar.YEAR,year);4 time.set(Calendar.MONTH,i-1);//注意Calendar對象預設一月是為零的5 int
Time of Update: 2018-12-05
1.你需要精通物件導向分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該瞭解UML,尤其是class,object,interaction以及statediagrams。 2.你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams, networking,?multithreading,reflection,event,handling,NIO,localization,以及其他)。
Time of Update: 2018-12-05
1 import java.util.*; 2 public class DateClass 3 { 4 public static void main(String args[ ]) 5 { 6 Date m = new Date( ); 7 System.out.println("現在是:"+m.toString( )); 8 Calendar n = Calendar.getInstance( ); 9