Java程式碼優化-在某種情況下避免Map的containsKey方法的使用
當要在HashSet或者HashMap中add/put之前判斷是否存在key時,可以直接使用add/put方法然後根據返回值來判斷,因為put/add方法會將以前節點的value返回(對於Set來說會將Object物件返回,涉及到HashSet的實現方式:用HashMap實現,然後每一個節點的value放的都是同一個Object物件) 如果不存在則返回null說明不包含這個key,否則返回非空說明包含這個key。這樣可以避免contain的多餘使用,當這樣的操作(開頭所說的操作)較多時會提高時間效率~~~
這個是leetcode上的一道題 https://leetcode.com/problems/contains-duplicate-ii/
從圖中可以看出,前者(11ms)比後者(15ms)效率提升了不少(這個還是在測試情況不多的情況下-20個測試用例),同理,使用Map的時候也是一樣~~~
這個只是在做題和研究原始碼過程中一個小小的優化技巧(雖然微不足道吧,但是個人覺得細節還是挺重要的),大家有什麼意見可以多多交流~歡迎~
相關推薦
Java程式碼優化-在某種情況下避免Map的containsKey方法的使用
當要在HashSet或者HashMap中add/put之前判斷是否存在key時,可以直接使用add/put方法然後根據返回值來判斷,因為put/add方法會將以前節點的value返回(對於Set來說會將Object物件返回,涉及到HashSet的實現方式:用Ha
JAVA程式碼優化5個細節
1、儘量指定類、方法的final修飾符 帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。如果指定了
四十三條純乾貨 Java 程式碼優化建議
(1)儘量指定類、方法的 final 修飾符 帶有 final 修飾符的類是不可派生的。在 Java 核心 API 中,有許多應用 final 的例子,例如 java.lang.String,整個類都是 final 的。為類指定 final 修飾符可以讓類不可以被繼承,為方法指定 final 修
angular: 程式碼正確的情況下npm不斷提示 TS2307: Cannot find module XXX , TS2305: Module XXX has no exported member
探索angular. 照搬示例模組,添加了自定義的模組,名稱為device,程式碼全部正確,VSCode沒有報錯,但是npm啟動時各種報錯: 主要是TS2307: Cannot find module、TS2305: Module XXX has no exported membe
碼神是如何煉成的?——記十個java程式碼優化之道
大部分程式設計師技術平平,只能稱之為碼農 還有一小部分程式設計師,程式碼敲得一流,稱之為大神,也叫碼神 你想成為碼神嗎!認真往下看吧! (1)對資源的close()建議分開操作 意思是,比如我有這麼一段程式碼: try{ XXX.close(); YYY.close();
java程式碼優化(一)——建立和銷燬物件
用靜態工廠方法代替構造器 準備知識 自動裝箱:從基本資料型別轉換成包裝型別。 自動拆箱:從包裝型別轉換成基本資料型別。 包裝類: number(數字型別) Byte(byte) Short(short) Integer(int) Long(long) Dou
java:IO流(什麼情況下使用字元流)
* 字元流也可以拷貝文字檔案, 但不推薦使用. 因為讀取時會把位元組轉為字元, 寫出時還要把字元轉回位元組. * 程式需要讀取一段文字, 或者需要寫出一段文字的時候可以使用字元流 * 讀取的時候是按照字
Java程式碼優化
轉自:http://www.importnew.com/28395.html 前言 2016年3月修改,結合自己的工作和平時學習的體驗重新談一下為什麼要進行程式碼優化。在修改之前,我的說法是這樣的: 就像鯨魚吃蝦米一樣,也許吃一個兩個蝦米對於鯨魚來說作用不大,但
java程式碼優化(二)——如何覆蓋Object的公用方法(equals、hashcode、compareTo、toString)
覆蓋equals方法時請遵守通用約定 什麼情況需要覆蓋equals方法? 當需要比較的類有自己的邏輯特點時,而Object的equals方法不能達到預期的效果時,就需要覆蓋equals比較類的屬性值。 覆蓋equals方法的通用約定 自反性——對於任何非null的物件
推薦四十多條純乾貨 Java 程式碼優化建議
程式碼優化最重要的作用應該是避免未知的錯誤,因此在寫程式碼的時候,從源頭開始注意各種細節,權衡並使用最優的選擇,將會很大程度上避免出現未知的錯誤,從長遠看也極大的降低了工作量。所以說程式碼優化的目標是減小程式碼體積、提高程式碼執行效率。優化是無止境的,本文也只
Java程式碼優化總結(持續更新)
1、對equals不熟 例子 if(user.get("s").equals("ss")){ //一堆程式碼 } 注:一旦前端頁面傳null值過來,就錯了,null不能.equals 修改 if("ss".equals(user.get("s"))){ /
實用的java程式碼優化技巧
文章為轉載!出處(https://www.cnblogs.com/qlqwjy/p/7717735.html) (同樣的程式碼換個方式寫,效率的差距是非常大的。) 代 碼優化,一個很重要的課題。可能有些人覺得沒用,一些細小的地方有什麼好修改的,改與不改對於程式碼的執行效率有什麼影響呢?這個問
Java程式碼優化:靜態工廠方法 Static Factory Method
Effective Java中提出了靜態工廠,即不使用產品的constructor來提供產品,靜態工廠不是開發模式,而是一種改進提供例項的策略。 如何實現? 很簡單,靜態工廠方法的定義是:一個返回類的例項的靜態方法 這樣做有什麼好處? 1)靜態工廠方法簽名可讀性強,封裝了不必
C++ where(true)與 switch結合使用實現在某種情況下的迴圈執行
今天看開原始碼的時候看到一段程式碼有如下的結構。開原始碼塊太長,於是寫了一個測試程式測試了一下這種用法的作用,在此做個記錄。 while(true){ switch(){ case: ... } }
學習筆記-JAVA-考點10-什麼情況下需要重寫equals和hashcode()兩個方法?
一、什麼情況下需要重寫equals和hashcode()兩個方法? 1、加入到hashset中的自定義類的物件,為確保他們不重複,需要對他們的類重寫equals()和hashcode()的方法。 如果不重寫equals,相同內容不同引用的物件會被當做不同的物件被加入到has
Java在有繼承情況下初始化函式的呼叫
廢話不多說,看下面的程式碼: public class Son extends Father{ int a = fun(); public int fun(){ System.out.println("son fun");
如何用Java程式碼列出一個目錄下所有的檔案?
如果只要求列出當前資料夾下的檔案,程式碼如下所示:package chimomo.learning.java.file; import java.io.File; /** * @author Ch
關於Java程式碼優化的N條建議!
本文是作者:五月的倉頡 結合自己的工作和平時學習的體驗重新談一下為什麼要進行程式碼優化。在修改之前,作者的說法是這樣的: 就像鯨魚吃蝦米一樣,也許吃一個兩個蝦米對於鯨魚來說作用不大,但是吃的蝦米多了,鯨魚自然飽了。 程式碼優化一樣,也許一個兩個的優化,對於提升程式碼的執行
Java 程式碼優化過程的例項介紹
簡介: 通過筆者經歷的一個專案例項,本文介紹了 Java 程式碼優化的過程,總結了優化 Java 程式的一些最佳實踐,分析了進行優化的方法,並解釋了效能提升的原因。從多個角度分析導致效能低的原因,並逐個進行優化,最終使得程式的效能得到極大提升,程式碼的可讀性、可擴充套件性
maven專案,程式碼正確的情況下,整個專案中的類報cannot be resolved to a type
eclipse中,匯入maven專案, install後,仍有很多類報cannot be resolved to a type,這是因為未update maven, 並且專案的clean與maven的clean不同步的結果 解決方案: step1. Project--