Time of Update: 2017-01-19
java的Map集合中按value值進行排序輸出的執行個體代碼import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.Set;public class Test {public static void main(String[] args) {Map<String ,Integer> map = new
Time of Update: 2017-01-19
Map是索引值對的集合,又叫作字典或關聯陣列等,是最常見的資料結構之一。在java如何讓一個map按value排序呢? 看似簡單,但卻不容易!比如,Map中key是String類型,表示一個單詞,而value是int型,表示該單詞出現的次數,現在我們想要按照單詞出現的次數來排序:Map map = new TreeMap();map.put("me", 1000);map.put("and", 4000);map.put("you", 3000);map.put("food",
Time of Update: 2017-01-19
一、理論準備Map是索引值對的集合介面,它的實作類別主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基於紅/黑樹狀結構(Red-Black tree)的 NavigableMap 實現,該映射根據其鍵的自然順序進行排序,或者根據建立映射時提供的 Comparator
Time of Update: 2017-01-19
class的裝載在講class的初始化之前,我們來講解下class的裝載順序。以下摘自《Thinking in Java 4》由於Java 中的一切東西都是對象,所以許多活動變得更加簡單,這個問題便是其中的一例。正如下一章會講到的那樣,每個對象的代碼都存在於獨立的檔案中。除非真的需要代碼,否則那個檔案是不會載入的。通常,我們可認為除非那個類的一個物件建構完畢,否則代碼不會真的載入。由於static
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * CountDownLatch是個計數器,它有一個初始數, * 等待這個計數器的線程必須等到計數器倒數到零時才可繼續。 */public class
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.Random;import java.util.concurrent.CyclicBarrier;/** * CyclicBarrier類似於CountDownLatch也是個計數器, * 不同的是CyclicBarrier數的是調用了CyclicBarrier.await()進入等待的線程數, *
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * Java 5.0裡新加了4個協調線程間進程的同步裝置,它們分別是: * Semaphore, CountDownLatch, CyclicBarrier和Exchanger.&
Time of Update: 2017-01-19
複製代碼 代碼如下:import java.util.LinkedList;public class OJ { public OJ() { super(); } /* * 功能:輸入一行數字,如果我們把這行數字中的'5'都看成空格,那麼就得到一行用空格分隔的非負整數(可能有些整數以'0'開頭,這些頭部的'0'應該被忽略掉 * ,除非這個整數就是由若干個'0'組成的,這時這個整數就是0)。
Time of Update: 2017-01-19
JDK(Java Development Kit,Java開發包,Java開發工具)是一個寫Java的applet和應用程式的程式開發環境。它由一個處於作業系統層之上的運行環境還有開發人員編譯,調試和運行用Java語言寫的applet和應用程式所需的工具組成。 JDK(Java Development Kit)是Sun Microsystems針對Java開發員的產品。自從Java推出以來,JDK已經成為使用最廣泛的Java SDK(Software development kit)。
Time of Update: 2017-01-19
特點:長度是可變化的(底層實際是不斷的new數組)可以直接操作多個資料類型最終會通過toString方法變成字串可以對字串進行修改線程是同步的與數組之間的區別:StringBuffer:長度是可變的,可以儲存不同類型的資料 數組:長度不可變,只能儲存一種資料類型StringBuffer功能:儲存(create)StringBuffer append():將指定的資料作為參數添加到已有資料結尾處(除了byte和short類型的資料沒有以外其他資料類型都有都可以)StringBuffer
Time of Update: 2017-01-19
常用的方法: 複製代碼 代碼如下: long currentTimeMillis(); 擷取目前時間的毫秒值 void exit();終止當前正在啟動並執行 JAVA 虛擬機器。 複製代碼 代碼如下: public static void Method(){ long l = System.currentTimeMillis();
Time of Update: 2017-01-19
|--List:元素是有序的(怎麼存的就怎麼取出來,順序不會亂),元素可以重複(角標1上有個3,角標2上也可以有個3)因為該集合體系有索引, |-- ArrayList:底層的資料結構使用的是數組結構(數組長度是可變的百分之五十延長)(特點是查詢很快,但增刪較慢)線程不同步 |-- LinkedList:底層的資料結構是鏈表結構(特點是查詢較慢,增刪較快) |-- Vector:底層是數組資料結構
Time of Update: 2017-01-19
複製代碼 代碼如下:class ArrayListTest1 { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("java03"); &
Time of Update: 2017-01-19
複製代碼 代碼如下:package com.yao;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.ScheduledFuture;import java.util.concurrent.TimeUnit;/** * 以下是一個帶方法的類,它設定了 ScheduledExecutorService
Time of Update: 2017-01-19
本章涉及到的內容包括:1. join()介紹2. join()源碼分析(基於JDK1.7.0_40)3. join()樣本1. join()介紹join() 定義在Thread.java中。join() 的作用:讓“主線程”等待“子線程”結束之後才能繼續運行。這句話可能有點晦澀,我們還是通過例子去理解:複製代碼 代碼如下:// 主線程public class Father extends Thread { public void run()
Time of Update: 2017-01-19
本章涉及到的內容包括:1. sleep()介紹2. sleep()樣本3. sleep() 與 wait()的比較1. sleep()介紹sleep() 定義在Thread.java中。sleep() 的作用是讓當前線程休眠,即當前線程會從“運行狀態”進入到“休眠(阻塞)狀態”。sleep()會指定休眠時間,線程休眠的時間會大於/等於該休眠時間;線上程重新被喚醒時,它會由“阻塞狀態”變成“就緒狀態”,從而等待cpu的調度執行。2. sleep()樣本下面通過一個簡單樣本示範sleep()的用法。
Time of Update: 2017-01-19
本章涉及到的內容包括:1. yield()介紹2. yield()樣本3. yield() 與 wait()的比較1. yield()介紹yield()的作用是讓步。它能讓當前線程由“運行狀態”進入到“就緒狀態”,從而讓其它具有相同優先順序的等待線程擷取執行權;但是,並不能保證在當前線程調用yield()之後,其它具有相同優先順序的線程就一定能獲得執行權;也有可能是當前線程又進入到“運行狀態”繼續運行!2. yield()樣本下面,通過樣本查看它的用法。複製代碼 代碼如下://
Time of Update: 2017-01-19
本章,會對線程等待/喚醒方法進行介紹。涉及到的內容包括:1. wait(), notify(), notifyAll()等方法介紹2. wait()和notify()3. wait(long timeout)和notify()4. wait() 和 notifyAll()5. 為什麼notify(), wait()等函數定義在Object中,而不是Thread中wait(), notify(), notifyAll()等方法介紹在Object.java中,定義了wait(),
Time of Update: 2017-01-19
Thread類包含start()和run()方法,它們的區別是什嗎?本章將對此作出解答。本章內容包括:start() 和 run()的區別說明start() 和 run()的區別樣本start() 和 run()相關源碼(基於JDK1.7.0_40)start() 和 run()的區別說明start() : 它的作用是啟動一個新線程,新線程會執行相應的run()方法。start()不能被重複調用。run() :