第46條:for-each迴圈優先於傳統的for迴圈
for-each迴圈和傳統的for迴圈相比的優點:1.簡潔性,2.預防bug的優勢,3.無效能損失。因此能夠用for-each的儘量用for-each,不要用for迴圈。collectios和arrays都能使用for-each。只要事先了iterable介面的類都能使用for-each。
但是有些情況下不能使用for-each:1.過濾,要刪除指定的元素時,不能用for-each。2.轉換,但需要遍歷list或者array修改部分或者全部數值的時候,需要記錄起始位置和結束為止的迭代器或索引變數。3.並行迭代,當需要並行迭代不同的集合時,需要迭代器變數或者索引時候,不能用for-each
reference:
effective java 第二版 機械工業出版社
相關推薦
第46條:for-each迴圈優先於傳統的for迴圈
for-each迴圈和傳統的for迴圈相比的優點:1.簡潔性,2.預防bug的優勢,3.無效能損失。因此能夠用for-each的儘量用for-each,不要用for迴圈。collectios和arrays都能使用for-each。只要事先了iterable介面的類都能使用f
第四十六條 for-each迴圈優先於傳統的for迴圈
在java 1.5 版本之前,我們對集合的遍歷,首選用迭代器 List c = new ArrayList<>(); c.add("a"); for(Iterator i = c.iterator(); i.hasN
Java高效編碼:for-each迴圈優先於傳統的for迴圈
版本1.5之前,在集合上迭代優先考慮的習慣用法如下: // No longer the preferred idiom to iterate over a collection! for (Iterator i = c.iterator(); i.hasNext(); ) { doSometh
Effective Java 第三版——58. for-each循環優於傳統for循環
inter clu its 程序員 方法 討論 one 控制 傳統 Tips 書中的源代碼地址:https://github.com/jbloch/effective-java-3e-source-code 註意,書中的有些代碼裏方法是基於Java 9 API中的,所以J
第18條:接口優先抽象類
multiple ace .com cts 調用 基本 允許 事物 target Java程序設計語言提供了兩種機制,可以用來定義允許多個實現的類型:接口和抽象類。這兩種機制之間最明顯的區別在於: 1、抽象類允許包含某些方法的實現,但是接口不允許 2、為了實現由抽象類定
第29條:優先考慮型別安全的異構容器
術語 : 有時會需要未限定固定數目的型別引數的容器,此時,可以將容器的鍵進行引數化而不是將容器引數化。然後將引數化的鍵交給容器來插入或者獲得值。用泛型系統來確保值的型別和它的鍵相符。示例程式碼如下: // Typesafe heterogeneous
第16條:複合優先於繼承
術語: 轉發(forwarding):新類中的每個例項方法都可以呼叫被包含的現有類例項中對應的方法,並返回它的結果。新類中的方法被稱為“轉發方法”。 繼承(inheritance)是實現程式碼重用的有力手段,但它並非永遠是完成這項任務的最佳工作。使用不當會
第 1 條:了解 Objective-C 語言的起源
還在 特性 只知道 程序 開發 不能 核心 nbsp 原因 馬上就要發布 Swift 4 了,自己也在學習 Swift,後面 iOS 編程估計也快是 Swift 的天下了,我卻還在這抱著一本講 OC 的書在啃,怪只能怪自己之前太懶了,按定價好幾十塊錢買的書不讀完,簡直對
第46天:setInterval與setTimeout的區別
bsp mil ava 定義 form func 一起 tro 案例 js的setTimeout方法用處比較多,通常用在頁面刷新了、延遲執行了等等。今天對js的setTimeout方法做一個系統地總結。 setInterval與setTimeout的區別 說道setTime
《Effective Java 中文版 第2版》學習筆記 第4條:通過私有構造器強化不可實例化的能力
缺省 ive ont sof family 其他 筆記 cnblogs ror 只有當類不包含顯式的構造器時,編譯器才會生成一個公有的、無參的缺省構造器。只要讓一個類包含私有構造器,這個類就不能被實例化了。示例: 1 // 工具類 2 public class Uti
《Effective Java 中文版 第2版》學習筆記 第5條:避免創建不必要的對象
多余 除了 示例 中文 註意 構造器 stat get tro 最好能重用對象而不是在每次需要的時候就創建一個相同功能的新對象。如果對象是不可變的,它就始終可以被重用。 1 String s = new String("stringette"); 每次執行該語句
《Effective Java 中文版 第2版》學習筆記 第7條:避免使用終結方法
擁有 fec finalize span fin effect 分布式系 leg 內存 在Java中,當一個對象變得不可到達時,垃圾回收器會回收與該對象相關聯的存儲空間。用try-finally塊來回收其他的非內存資源。 終結方法的缺點在於不能保證會被及時地執行
第46節:Java當中的常量池
sco one stat 操作系統 修飾 odr 1.0 其中 運行時常量 Java當中的常量池 在Java虛擬機jvm中,內存分布為:虛擬機堆,程序計數器,本地方法棧,虛擬機棧,方法區。 程序計數器是jvm執行程序的流水線,是用來存放一些指令的,本地方法棧是jvm操作
研發哲學第五條:一定要有後備方案
鄭昀 20181109 #哲學 #災備 #devop 過去的九月和十月,厄運接踵而至: 大大小小連續幾次事故。 阿里雲華北機房網路抖動。 網某銀行支付通道抖動。 銀聯支付通道抖動。 某IDC機房出網流量丟包嚴重長達幾十分鐘。 我冷眼旁觀 我
第1條:考慮採用靜態工廠方法代替構造器
第1條:考慮採用靜態工廠方法代替構造器 對類而言,為了讓客戶端獲取它自身的一個例項,最常用的方法就是提供一個公有的構造器。還有一種應該被程式設計師重視的方法:類提供一個公有的靜態工廠方法(static factory method),它只是一個返回類的例項的靜態方法。下面是來自Boolean(基本型別boo
第7條:避免使用終結方法
正常 一個bug c++程序 似的 一個 細節 sta 正是 safety 第7條:避免使用終結方法 終結方法(finalizer)通常是不可預測的,也是很危險的,一般情況下是不必要的。使用終結方法會導致行為不穩定,降低性能以及可移植性問題。 C++程序員被告知&ldq
第2條:遇到多個構造器引數時要考慮用構造器
一、靜態工廠和構造器有個共同的侷限性:它們都不能很好地擴充套件到大量的可選引數。 二、重疊構造器模式可行,但是當有許多引數的時候,客戶端程式碼會很難編寫,並且仍然較難以閱讀—— Demo: 三、遇
第3條:用私有構造器或者列舉類型別強化Singleton屬性
一、公有final域靜態成員 //Singleton with public final field public class Elvis { public static final Elvi
第5條:避免建立不必要的物件
一、一般來說,最好能重用物件而不是在每次需要的時候就建立一個相同功能的新物件。 String s = new String("stringette");//DON'T DO THIS //改進後的版
Effective Java 泛型 第28條:利用有限制萬用字元來提升API的靈活性
如第25條所述,引數化型別是 不可變的(invariant)。換句話說,對於任何兩個截然不同的型別tyle1和type2來說,List< Type1>既不是List< Type2>的子型別,也不是他的超型別。雖然List< Stri