JAVA新特性總結(jié)及案例_第1頁
JAVA新特性總結(jié)及案例_第2頁
JAVA新特性總結(jié)及案例_第3頁
JAVA新特性總結(jié)及案例_第4頁
JAVA新特性總結(jié)及案例_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、一 Lambda函數(shù)箭頭函數(shù)Lambda表達(dá)式,也可稱為閉包,它是推動Java 8發(fā)布的最重要新特性.Lambda允許把函數(shù)作為一個方法的參數(shù)函數(shù)作為參數(shù)傳遞進(jìn)方法中.使用Lambda表達(dá)式可以使代碼變的更加簡潔緊湊.parameters -> expression < parameters -> statementl ;statement2 ;lambda表達(dá)式的重要特征:可選類型聲明:不需要聲明參數(shù)類型,編譯器可以統(tǒng)一識別參數(shù)值.可選的參數(shù)圓括號:一個參數(shù)無需定義圓括號,但多個參數(shù)需要定義圓括號.可選的大括號:如果主體包含了一個語句,就不需要使用大括號.可選的返回關(guān)鍵字:

2、如果主體只有一個表達(dá)式返回值那么編譯器會自動返回,大括號需指定表達(dá)式返回數(shù)值.本質(zhì)上,Lambda函數(shù)是對匿名內(nèi)部類對象的簡寫.應(yīng)用舉例1 比擬JAVA7與JAVA8 : Lambda函數(shù)做類的屬性1 package comcompany.avaSj 23 irrterface IlHath (4 int ep«rjitA&n(lnt % int y)j,5 ) 67 pybllc clast Lambd.il 8 privateItthadd=(int*, inty) >>m4仆"如附部用重H#中*青網(wǎng)范輯只有一句*忒,不用M仆9 privateIft

3、nth%ub=(kj.y)sc-y/中代不話M荒將笠主10 privet*IHfltlhriLil=(Xjy)->x*yj11privatennathdiv,y)->x/yjhi-/*;13* ad%5Mzl皿WB與子實現(xiàn)f gth櫻口制居達(dá)內(nèi)學(xué)奧時累14 .例如 add4 J AVA7 4 Cl S btE15* prlYntc IH«th «dd = n«:16public int op«r«ti9n(lnt y) p.7return 寓中yjp)口 9 H20*/21public static vld niAiiii(Strl

4、rig trgs) i22Lanrbdal lam Larmbdal ();- 23Sy steal .out. pr intJii.aini . add .dtjiBrl (,工公 8 ill1 ;- 24Sy st«n. pr In.當(dāng)ub.tion(1% 8);;25SyttMi Mt printing .mul, 111(188) h- 26Sy iten 卜 out . printing 1 Bm d d iv operation (町)Ips )2 運(yùn)行結(jié)果:應(yīng)用舉例2 比擬JAVA7與JAVA8:Lambda函數(shù)做 main函數(shù)變量jj Lmirfcda打肛 k Dem

5、oJava Jj Demo4Java 叵 lambdaijar/a1 package eom« company * java3;2m interface £Math2 (A int aperation(int int y)j5 67 public class Lambda2 £public static void main(Strirg args) S 9Inath2add=(int x, Inty) -> x + y;|10IMath2sub=(x>y)->x-y,jllIMath2mul=(冷V)>乂率V;112IMath2div=(x

6、,y)->x/y;a 產(chǎn)* mddjWb/ul.dN相當(dāng)于實現(xiàn)了工Math果li的匿名內(nèi)部類對象115*例如;|16* IMath add = new IMath()|17public int op$ration(int Xjint y) |18return x+yjE -System, out. p rint In ( ad d. op« r aition (19 j 8)jSystem.out.printlnfsub,operationflfij8)j*4System * out»printin ( mul«ope ration (IGj 8) ) jS

7、ystemt owt - priritln (div »operation(20? 8) j126) 應(yīng)用舉例3:1 package com.七23 interface ISpeik 4 void tilk(String mi<)j$ )67 public Lambd«j fi public static void main(String »目4) (p/執(zhí)行一條語詞ISptak hello =println(BigTlength(P ;h+n«g .toUpperCf«*();illhellc.talkCMello world!&quo

8、t;)j|12/,執(zhí)行爨條語句13 ISpeak speaker = (msg)->14 S* 七?1國七尸而七】口*"力15 Syst«nprint In (hs£)>:16System »oiyt sprint In (t7sg«tolowerCase ) j175ys 七 m *2 亡.print In (n&g«toU1>pera5e( ) )jIS.avt*println(vhg*lenth();System.£H/t+println("*Fj婀卜122speaker etalk

9、("* Speak Chinese I+1);同:241±5 應(yīng)用舉例4:多線程啟動時使用 Lambda函數(shù)public static void main(String args) / use JAVA7new Thread(new Runrable() public void run() System-out t pr intIn("start thread«")jfor (int i = lj i <= 10j i+) Systemout,printin(i);try (Thread.sLeap(2.); catch (Interru

10、ptedException e) e.printStackTrace()j使用匿名內(nèi)部類的方式-J AVA7/ use 1AVA8 new Thread()-> |Systemrout»printin("start threwd.* . . for (int i = 1; i <=1日j i+) System. out. pr int In (" *r, + i)itry (fhread.itecp(2&Q); catch (InterruptedException e) e*printStackTrace()j).start()jJAVA8

11、使用 LwinM 加函數(shù)應(yīng)用舉例5:在1.7中,匿名內(nèi)部類只能使用定義為 final的外部變量,1.8會自動為 Lambda函數(shù)使用的外部變量加上 final,因此final可以省略不寫.£3 interface ITest 4 void speak.;5 )67 public clas& Lambda4 ( 號 s- public void19String us|ern«fne ="S8TT110 /奧聲明IT方法陽,叫靠局鼎內(nèi)部委11 /*class Tejtlmpl itiplemerit& ITest13 gverrldE14 public

12、 void speak( ?15 System«out«print In (11 My name IsT-Hisername) j16 Ifi17ISITestlit|= new T«stlinpl()19 it* speak()>ITest it - ()->System-out*prirtln("My name isi+usernore); h it«speak()j26 */: 23 |24 |25 萍2723public static void fflain(5trins arg5) 29 new Lambda4().30

13、31 )方法引用:方法名»調(diào)用了方法對象應(yīng)用舉例1:MethodRefl.java 民 |1 package com pany«javaSj2 - import java * util,ArrayList)W import java>util,List;4 public class MethodRefl 15public static void main(String args) 15 List<String> names = new ArrayList<String>(1 names add (T1AAA");8 names.add

14、)j9 namesadd("CCC");10 names.add(nDDD");11 namestaddC'EEE1,);12 names.add(MFFFT,);13 for(String name;name$)14 System.out,println(name);15 16 Systeni .白比.print*m 叱*叱);17 /*使用口川質(zhì)2的方法引用新特性二|18 *方法引用通過方法的名字來指向一個方法19 *方法引用可以使語言的構(gòu)這更緊湊簡潔,弒少冗余代碼J*方法引用使用一對導(dǎo)號(:)nomesforEach(Systemcut:;print

15、ln);2®212223 24 )25應(yīng)用舉例2:JTjJ. Methodujava 然1 package com4company«jav«i8;23 - import javautil.Arraylist;4 import jzv占*utilList;56 clas Person 7 靜態(tài)方法 Cldsf:: stdticMethodS public static void &peak(-Firal Person p) 9 System t out, prirtlnf" speak ,r + p);10 )11 廣"+為五堡方泣,特定

16、類的方法引用Class: method12 -publicvoidrest() 13 System * aut- println( "have a rest.* 11 )i14 )115/七科1卜是甘靜態(tài)萬法,拳數(shù)是PeEon p對象,屬于特定對象的方法引用,16 用 instances:method17 publicvoidtalk(Persanp)13System,println( "talk " + p)j25 public class MethodRef? public static void main(String args) <List<P

17、erson> persons = new ArrayList<Person>();Person p = new Person();persons.add(p)jpersons,add(new Persanf);persons.add(new Personf)jpersonstaddnew Person()i/persons,forEach(System.out:println);persons rforEach(Per£on:"加於);persons + forEach(Person:rest)./特定拿弓用pgr5gs千.年用二人心:1311<);

18、特定對象引用(蟄救為對象,方法蕭靜態(tài))三函數(shù)式接口函數(shù)式接口 (Functional Interface)就是一個具有一個方法的普通接口函數(shù)式接口可以被隱式轉(zhuǎn)換為lambda表達(dá)式函數(shù)式接口可以現(xiàn)有的函數(shù)友好地支持lambdaJDK 1.8之前已有的函數(shù)式接口:java.lang.Runnablejava.util.concurrent.Callablejava.security.PrivilegedActionjava.util paratorjava.io.FileFilterjava.nio.file.PathMatcherjava.lang.reflect.InvocationHand

19、lerjava.beans.PropertyChangeListenerjava.awt.event.ActionListenerjavax.swing.event.ChangeListenerJDK 1.8新增加的函數(shù)接口:java.util.functionjava.util.function它包含了很多類,用來支持Java的函數(shù)式編程,該包中的函數(shù)式接口有:序號接口 &描述1 BiConsumer<T,U>代表了一個接受兩個輸入?yún)?shù)的操作,并且不返回任何結(jié)果2 BiFunction<T,U,R>代表了一個接受兩個輸入?yún)?shù)的方法,并且返回一個結(jié)果3 Bina

20、ryOperator<T>代表了一個作用于于兩個同類型操作符的操作,并且返回了操作符同類型的結(jié)果4 BiPredicate<T,U>代表了一個兩個參數(shù)的boolean值方法5 BooleanSupplier代表了 boolean值結(jié)果的提供方Consumer<T>代表了接受一個輸入?yún)?shù)并且無返回的操作DoubleBinaryOperator代表了作用于兩個 double值操作符的操作,并且返回了一個double值的結(jié)果DoubleConsumer代表一個接受double值參數(shù)的操作,并且不返回結(jié)果.DoubleFunction<R>代表接受一個d

21、ouble值參數(shù)的方法,并且返回結(jié)果DoublePredicate代表一個擁有 double值參數(shù)的boolean值方法DoubleSupplier代表一個double值結(jié)構(gòu)的提供方DoubleToIntFunction接受一個double類型輸入,返回一個 int類型結(jié)果.DoubleToLongFunction接受一個double類型輸入,返回一個 long類型結(jié)果DoubleUnaryOperator接受一個參數(shù)同為類型double,返回值類型也為 double.Function<T,R>接受一個輸入?yún)?shù),返回一個結(jié)果.IntBinaryOperator接受兩個參數(shù)同為類型i

22、nt,返回值類型也為int.IntConsumer67891011121314151617接受一個int類型的輸入?yún)?shù),無返回值.181920212223242526272829IntFunction<R>接受一個int類型輸入?yún)?shù),返回一個結(jié)果.IntPredicate:接受一個int輸入?yún)?shù),返回一個布爾值的結(jié)果.IntSupplier無參數(shù),返回一個 int類型結(jié)果.IntToDoubleFunction接受一個int類型輸入,返回一個double類型結(jié)果.IntToLongFunction接受一個int類型輸入,返回一個long類型結(jié)果.IntUnaryOperator接受

23、一個參數(shù)同為類型int,返回值類型也為int.LongBinaryOperator接受兩個參數(shù)同為類型long,返回值類型也為long.LongConsumer接受一個long類型的輸入?yún)?shù),無返回值.LongFunction<R>接受一個long類型輸入?yún)?shù),返回一個結(jié)果.LongPredicateR接受一個long輸入?yún)?shù),返回一個布爾值類型結(jié)果.LongSupplier無參數(shù),返回一個結(jié)果long類型的值.LongToDoubleFunctionLongToIntFunction接受一個long類型輸入,返回一個 int類型結(jié)果.LongUnaryOperator接受一個參數(shù)

24、同為類型long,返回值類型也為long.ObjDoubleConsumer<T>接受一個object類型和一個double類型的輸入?yún)?shù),無返回值ObjIntConsumer<T>接受一個object類型和一個int類型的輸入?yún)?shù),無返回值.ObjLongConsumer<T>接受一個object類型和一個long類型的輸入?yún)?shù),無返回值.Predicate<T>接受一個輸入?yún)?shù),返回一個布爾值結(jié)果.Supplier<T>無參數(shù),返回一個結(jié)果.ToDoubleBiFunction<T,U>接受兩個輸入?yún)?shù),返回一個dou

25、ble類型結(jié)果ToDoubleFunction<T>接受一個輸入?yún)?shù),返回一個double類型結(jié)果ToIntBiFunction<T,U>接受兩個輸入?yún)?shù),返回一個int類型結(jié)果.ToIntFunction<T>303132333435363738394041接受一個輸入?yún)?shù),返回一個int類型結(jié)果.ToLongBiFunction<T,U>接受一個輸入?yún)?shù),返回一個long類型結(jié)果.43 UnaryOperator<T>接受一個參數(shù)為類型T,返回值類型也為 To._-V不4 import javautil,Listj1-: ini

26、pert java, util, function. Predicate;67 public class Fund 8 / Predicit*<T>推營一個管人箝物.第Fl 一個布乎出dpublic static void eval(List<Integer> listJpredicate<Tnteger> predicate10 -Q工n.cgwr num:工rt,11 hf七一4七 (num)12 /將List坦言中的蜀他遍防鵬中執(zhí)行,itHCT13 SyEtmDUf.print('1 *+num+H M);14 15 ) /16 System,

27、 out. prim t ln( ",一17 if?public static void min(Stri噫門U-lit他士 “斗,55“,即3,%5,6,7,29,1電3t區(qū)三盤處王譚傕入仃阿伯,而回格對tua“示所力用岷evat(li$tjn>nI2=ej/U SA A (An,Cn%2=01eval (listen 4n>77/n 卬人+3的勵值I PtaHMH Caraolt ES Ju JUnil.曰* X肇|各團(tuán).匹廬Fund Jm ApEiadoE?AProgr.m FMrfMXJft¥afreiJML7Wniww.fie l?017月 15日 P

28、MJ7M' I |123456789 1.24 6104 5 e 7 8 9 1G四接口的默認(rèn)方法默認(rèn)方法就是接口可以有實現(xiàn)方法,而且不需要實現(xiàn)類去實現(xiàn)其方法.我們只需在方法名前面加個default關(guān)鍵字即可實現(xiàn)默認(rèn)方法.為什么要有這個特性?1.8之前,修改接口意味著要修改全部實現(xiàn)該接口的類,例如,java 8之前的集合框架沒有 foreach方法,通常的解決方法是在JDK里給相關(guān)的接口添加新的方法及實現(xiàn)類.對于已 經(jīng)發(fā)布的版本,會影響已有的實現(xiàn).接口引進(jìn)了的默認(rèn)方法的機(jī)制.最大化的解決了接口的修改與現(xiàn)有的實現(xiàn)不兼容的問題.J| ITMtjava 笈J_ DiiriB.jsva1 pa

29、ckage com«company.javaBidefaultj24 public interface ITest 14/原有的三個方法5 voida();6 voidb();7 voidc();8 力 TTestjava 團(tuán) Testlmpljava 閃 Ll Demojava1 package com*company.javaS.idefault;24-、5 67 8* 910113 public class Te&tlrrpl implements ITest Override public void a() System»out.printin("

30、aaa")jOverridepublic void b() System.口ut. println("bbb");gOverride113public void c() ;14System . out ,println(,ccc");151門6 Jl IT estjavaTe?tlmpl.java j a Demo.java a1 package com pany«java8.idefault)23 public class Demo 4 -public static void main(String args) 1 5liest x = ne

31、w Testlmpl();I 6x,a();;7x.b()jI 8x.c()s9 10 11需求變更,需要修改接口,此時使用java8新特性中的接口默認(rèn)方法,實現(xiàn)類 Testlmpl無需改變代碼,ITest接口即可提供效勞.56789-1011Systemoutprintin(HHello World!); ITest.java 漢團(tuán) Testlmpl.java 叵)Demo.java1 package comcompanyjava8idefault;23 public interface ITest 4 /原有的三個方法void a(); void b(); void c,):/增加接口的默

32、認(rèn)方法default void print()12 iJ TesHrnpl.java2) Denno.Java 虞1 package cqe p曰ny+j日vd8*ick千曰ult;23 public class Demo public static void main(5tring args) ITe&t x = new Testlmplf);x.a()5XtprintC);6l910 11i二 Markers ,_ Properties Servers 說 Data Source Explorer L Snippets *_ Pro bier-=:terminated> De

33、mo Java Application C:Program Files (x86)Javajre 1.80'74binavaw»exeaaabbbHello World!當(dāng)然Testlmpl也可以覆蓋接口中的變更方法printH E !7(Kt4Jvj | 7| TaUmplj.v.用 團(tuán) D«mo.pvd1 package corn*ccxnpanye java8. idefault; 23 public class Testlmpl implements ITest4 - Overridea 5public void a() 6 System out. prin

34、tln(Naaa>l)j7 8 - Override 9public void b() 1 .System.oirt. println("bbbw) j11 )12 - Override13public void c() 14 Systemout.prlntln("ccc");15 11.161718192021Override public void print() ITest super print (); 用用原耒的貌認(rèn)方法System.out.printlnC在實現(xiàn)類中迫加U的功能:*十卜 )五 JAVA8 StreamStream使用一種類似用 S

35、QL語句從數(shù)據(jù)庫查詢數(shù)據(jù)的直觀方式來提供一種對Java集合運(yùn)算和表達(dá)的高階抽象.Stream API可以極大提供 Java程序員的生產(chǎn)力,讓程序員寫出高效率、干凈、簡潔的代碼.這種風(fēng)格將要處理的元素集合看作一種流,流在管道中傳輸,并且可以在管道的節(jié)點(diǎn)上進(jìn)行處理,比方篩選, 排序,聚合等,最后由最終操作(terminal operation)得到前面處理的結(jié)果.+-+| stream ofelements+>| filter +-> | sorted +-> | map+-> | collect |+-+以上的流程轉(zhuǎn)換為 Java代碼為:List <Integer

36、> transactionsIds=widgets . stream ().filter(b ->b. getColor ()= RED).sorted ( x, y) -> x . getWeight()-y. getWeight ()5.1生成流:.mapToInt (Widget : getWeight ).sum();在Java 8中,集合接口有兩個方法來生成流:stream()-為集合創(chuàng)立串行流.parallelStream()-為集合創(chuàng)立并行流.【串行與并行】4 567B9Q 12345678 90 1 2 345E 111111111222222-1 OMM.&

37、#39;.,ncl., ,»!mQ0OKiJIInK,',.i:,o'.'«, , ,山玄rewfilM岫:p-Hc kag« c mi * c Qflp«ny Java 8. s trnMjimport java«. util«Arrays;import jBV9iAutil<Liit;import javsi utH« stre»i Col lectors;public class Streaiivl (pvibllc static voidString J «rg

38、71;) LlstcStPing? naines = A葉和.sH式ABC' "',"BCD *CDA (> 'DDO ,lwf "EE*)Li a t< Strings hercs nm心學(xué)f酊生就用打流fcfilter(string -> !strir>ftisEflpty()/irHBTTTFR7L<* 811Kt<Colkdton,tM亡t()打"聚合甫一十Lntfli合 System. out .printlnf names);Sy 5 tem«ucrt pr intlri

39、(he ros) jLi st < String? strs > names.parallelStream()/Hi|j 卅«filter (itr 1 ng-> string«e&ntains ("C* ) /0» 6>*£, eollKtC Cd Ila utnr i £ t ) j 翻 2 成 tLiiktSSystem, out Kpr intlnf strs)j)ABC:,BCD, CD% DDD3EEEABC, BCDj CDAj DDD, EEEABC, BCDj CDA5.2 forEa

40、ch遍歷方法5.3 map 方法map用于映射每個元素到對應(yīng)的運(yùn)行結(jié)果5.4 filter 、 limit 、 sorted 、 parallelstreamfilter方法用于通過設(shè)置的條件過濾出元素limit獲取指定數(shù)量的流 sorted對流對象進(jìn)行排序parallelstream并行流替代串行流j8匚±51后|1上1 package com B ccmpairy - javaS . strean;2 java - util 5 ftrrflyS;3 import javaBurtile Li»t;4 import j eva»liti 1 - Rarid9m

41、;5 public class Strean4 I b public static void rraijn(Strlng args) 7Mprint lrii(11 * * * * * * *+* « «+*«* 4 «* «*4 * *.*);Ll£t45tFl可"tz劉" 工"uy口mHtCalx' WHf "Ik- Befgwf "abcd""",10ff礁章亨字符串眄簟111Int CMint = (Int) strings«at

42、res«C)«flrin< -> 4trin(4lsE«ipty(.count()i125ysten+atft+prlnt lni("空手符圖的聶*+=即2+.曲打113115Raiidcwv 逐Me " mm 兄17390) ,llMt(10) ,firEachSy111*rwti 2PMmIn);I1SStE+d aprintlMW"".""*l20Rondon i".M Rtw 鼠事indg(jpirandl. intsfl, l±init(10) B sortedf

43、 ). f sr Each (System, ctrf : 3 primtln );忸I(lǐng)2 J5ytm.dtftnprlntlHi( n*1 *j*aparaUelJ|-bSS.* * * * *11 JjI24Ll«t<Strlng> ttr« 望 Arny4.0 s£iit("*bc11 j' "叁律、W Hjkl");nS/隼/文字"用的Nr量才后Inf FiLHt = ( ifit ) &tr.Ppairal lelStreamiQ . ft It er ( string - > !

44、 st ring + Ifi Empty ( ) ) count ( jCTSyst e« w t + pri n 11 口?"北主字舞事量;h> m) 事ha )獷5.5 collect方法及Collectors 類Collectors.toList方法由流轉(zhuǎn)變?yōu)?List集合Collectors.joining(",")方法,由流轉(zhuǎn)變?yōu)樽址畉 p#L.kdge coa. ccnpdny. javdfi .itrearv; 24 import jav. Lrtll. Arrays j5 1 import jawa. util .rList;6

45、Impart a, uti 1 vttrf«n PC«1 Ifct&irt sfi>7 public rlavi Strnf (E public s-tatie void rKBin(Strln|g J args)(S* ft Ml . prL ht.n L j m * * M* 11 . f m f .811H t.崔良 t fld 工友n賣 T . f . f d LlttfStrini > rt-rnift Arnyi. m Ka tCBi«l>cHf * Mbc Ff. 皿* ' W力11List<Strings f

46、rtrllst * 5trlngj+ strwn()12-f ilter(strlng -? Istrlng. IsEmptyQ )1J.eolleet<C ol lectors totlstOJiH 站歲修亶為 l&Ul,F415 擊后胃*的H青:* * itrtiitJ;16 st ril. iit . fcrlEc h ( 5t b .out;pr int ln)j117卜String nergedStrtng * itriH.gi19 * f 11 ttr( 4 trirtg; * * I string .* ItErftptyt)|z電. ealle£t(ol

47、lKtar«Jofnf(綱一 "); *«臺界力孑署豐21S產(chǎn)11*1七及111巾11號后音井的字再串:"* wrgedStrlng)Ez )» j245.6 IntSummaryStatistics統(tǒng)計收集器a import java.ut 11.Arrays4 import Java, util. IntunrnarStatl&tlcs;> impart mt 11.Ll-ct; 67 ipublic cla Strea«6 (8 public «title wld MintStrlngL »rg

48、) .9,統(tǒng)計收集生:生事用Flntr dbubl£ Inn©號基*美也,町敏產(chǎn)生如下境結(jié)果19Integers 量口/占y.壯$工t5t(3導(dǎo) 2才 2> /7A 3t SJj,hi112IntSuMna rySt at i st 1c s ststs - i nt ege r 5 9 st re amf ). napToInt ( x ) -> x)>5L«i«ryStatl5tic5();113.14力,1 網(wǎng)表中.大的教:* *'IS&ystM. out.printlnf >B, + stats . get

49、M±n( ) )j.16S 11 +,力爪3通式加,?)力1/Sy 51«- t print In (" ftats»efftAver*e();fca ij )205.7 綜合比擬JAVA7與JAVA8package com pany.java8.stream;import java.util.ArrayList;import java.util.Arrays;import java.util.IntSummaryStatistics;import java.util.List;import java.util.Random;import java.ut

50、il.stream.Collectors;public class Stream7 /Java7計算空字符串?dāng)?shù)量private static int getCountEmptyStringUsingJava7(List<String> strings) int count = 0;for (String string : strings) if (string.isEmpty() count+;)return count;)/Java7計算長度為3的字符串?dāng)?shù)量private static int getCountLength3UsingJava7(List<String>

51、; strings) int count = 0;for (String string : strings) if (string.length() = 3) count+;)return count;)/Java7將非空字符串整合成List集合private static List<String> deleteEmptyStringsUsingJava7(List<String> strings) List<String> filteredList = new ArrayList<String>();for (String string : s

52、trings) if (!string.isEmpty() filteredList.add(string);)/Java7將非空字符串合并成指定分隔符的字符串private static String getMergedStringUsingJava7(List<String> strings, String separator) StringBuilder stringBuilder = new StringBuilder();for (String string : strings) if (!string.isEmpty() stringBuilder.append(str

53、ing);stringBuilder.append(separator);)String mergedString = stringBuilder.toString();return mergedString.substring(0, mergedString.length() - 2);)/Java7獲取平方集合private static List<Integer> getSquares(List<Integer> numbers) List<Integer> squaresList = new ArrayList<Integer>();fo

54、r (Integer number : numbers) Integer square = new Integer(Value() * Value();if (!squaresList.contains(square) squaresList.add(square);) return squaresList;/Java7獲取最大值private static int getMax(List<Integer> numbers) int max = numbers.get(0);for (int i = 1; i < numbers.siz

55、e(); i+) Integer number = numbers.get(i);if (Value() > max) max = Value();)return max;)/Java7獲取最小值private static int getMin(List<Integer> numbers) int min = numbers.get(0);for (int i = 1; i < numbers.size(); i+) Integer number = numbers.get(i);if (Value() &l

56、t; min) min = Value();) return min;/Java7獲取總數(shù)private static int getSum(List<Integer> numbers) int sum = (int) (numbers.get(0);for (int i = 1; i < numbers.size(); i+) sum += (int) numbers.get(i);)return sum;)/Java7獲取平均值private static int getAverage(List<Integer> numbers) return getSum(numbers) / numbers.size();)/主函數(shù)public static void main(String args) System.out.println( "*");System.out.println("使用 Java 7:");/計算空字符串List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd", &qu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論