Danh mục

Core Java Volume

Số trang: 11      Loại file: doc      Dung lượng: 76.50 KB      Lượt xem: 12      Lượt tải: 0    
Thu Hiền

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trongnhững ngôn ngữ lập trình nhìnchung, trong C bạnphải fix cỡ của tất cả các mảng ởthời gian dịch. Người lập trình ghét điều này bởi vì nó gây cho họ sự không thoải mái. Có baonhiêu nhân viên sẽ ở một phòng? Chắc chắn không hơn 100. Điều j sẽ xảy ra nếu như phòng đócó 150 nhân viên? Bạn có muốn lãng phí 90 entries cho các phòng với chỉ có 10 nhân viên?
Nội dung trích xuất từ tài liệu:
Core Java VolumeSource:CoreJavaVolume1(Chapter5Genericarraylist).*Tiệnlợikhidùngarraylist>nótựđộnggiãnmảngnếusốlượngcácelementslàquácapacity.Nósẽtựđộngtạo1arraycóstoragelớnhơnsauđócopytoànbộcácelementssangmảngmới.CóthểtrimToSize>bỏstoragetớisizecủaarray.Nếunhưthêm1elementmớivàonósẽrellocate>vìvậycầnchúýtrướckhidùngthisstatement.CóthểensureCapacity>chắcchắnlàchỉchứa1sốlượngcốđịnh,n1arraylistcósứcchứa100nhưnglúcbanđầunócóthểkhônggiữ1elementsnàocảsaukhikhởitạo.*Xửlýcácelementstrongarraylist.Bạnphảichỉrõkíchcỡcủamảng.Bạnsửdụngaddđểaddnhiềuelementsmàbạnmuốn.Bạnsửdụngsize()thayvìsửdụnglengthđểđếmsốphầntử.Bạnsửdụnga.get(i)thayvìxửdụngađểxửlýthànhphần.Bạnsửdụngset>replace,notforadd.Đếnđâytựhỏitạisaokodùngvectormàlạidùngarraylist.Vìlýdonhưsau:Khidùngcâulệnha=b,vớia,blàvectorthìasẽtạora1vectormớicócapacity=capacitycủa b.Rồicopycácelementstừb>aTrongkhiđóvớiarraylistthìavàbcùngtrỏtới1arraylist.*KhảnăngtươngthíchgiữakiểuvàArrayLists. MoredetailTrongnhữngngônngữlậptrìnhnhìnchung,trongCbạnphảifixcỡcủatấtcảcácmảngởthờigiandịch.Ngườilậptrìnhghétđiềunàybởivìnógâychohọsựkhôngthoảimái.Cóbaonhiêunhânviênsẽởmộtphòng?Chắcchắnkhônghơn100.Điềujsẽxảyranếunhưphòngđócó150nhânviên?Bạncómuốnlãngphí90entrieschocácphòngvớichỉcó10nhânviên?TrongJava,tìnhhuốngnàyđãtrởnêntốthơn.Bạncóthểthiếtlậpcỡcủa1mảngởthờigianchạy.int actualSize = ...;Employee[] staff = new Employee[actualSize];Tấtnhiên,codenàykhôngphảilàhoàntoàngiảiquyếtđượcvấnđềđịnhnghĩamảngđộngởthờigianchạy.1lầnbạnthiếtlậpcỡcủamảng,bạnkhôngthểthayđổi1cáchdễdàng.Thayvàođó,mộtcáchtốtnhấttrongJavavớitìnhhuốngnàylàsửdụngclassJavakhác,đượcgọilàArrayList.ClassArrayListthìtươngtựvới1mảngnhưngnótựđộngđiềuchỉnhsứcchưacủanókhibạnthêmvàxoácácelementsmàbạnkhôngcầnviếtthêmbấtcứcodenào.TrongJDK5.0,ArrayListlàclassgenericvớikiểuthamsố.Đểchỉrõkiểucủacácobjectsmàarraylistnắmgiữ,bạnbổsungthêmdấuđóngngoặcnhọn,vídụArrayList.BạnsẽthấyởChương13cáchđịnhnghĩa1classgenericriêngcủabạnnhưngbạnkhôngcầnbiếtnhưngcôngnghệđượcsửdụngtrongkiểuArrayList.Ởđâychúngtakhaibáovàxâydựng1listmảngcácobjectsEmployee:ArrayListstaff=newArrayList();NOTE:TrướcJDK5.0,khôngcócácgenericclasses.Thayvàođó,chỉcó1classArrayList1vừavớitấtcảgiữcácelementscókiểuObject.NếubạnphảisửdụngphiênbảncũcủaJava,đơngiảnlàbảnxoáhếtcác.BạncóthểsửdụngArrayListmàkhôngcầncótrongJDK5.0vàsaunày.Nóđượcxemlàkiểuthômàthamsốđượcxoá.NOTE:TrongcácphiênbảncũcủangônngữlậptrìnhJava,cáclậptrìnhviênsửdụngclassVectorđốivớicácmảngđộng.Tuynhiên,ArrayListthìhiệuquảhơnvàkhôngcólýdojtốthơnđểsửdụngclassVector.Bạnsửdụngmethodaddđểaddcácelementsvàoarraylist.Vídụ,đâylàcáchbạnxácđịnhcácobjectsemployee:staff.add(new Employee(Harry Hacker, ...));staff.add(new Employee(Tony Tester, ...));ArrayListquảnlý1mảngmàobjecttrỏtới.Thậmchí,mảngđóchạyngoàikhoảng.Đâylànơimàcácarraylistlàmviệcmộtcáchlinhđộngcủachúng:Nếubạngọiaddvàmảngbêntrongđầythìarraylisttựđộngtạora1mảnglớnhơnvàcopiestấtcảcácobjectstừmảngnhỏhơnsangmảnglớnhơn.Nếubạnbiếthoặccódựđoántốt,cóbaonhiêuthànhphầnbạnmuốnlưugiữthìgọiensureCapacitytrướckhilấpđầyarraylist:staff.ensureCapacity(100);Nósẽxácđịnh100objectsbêntrongmảng.BạncóthểtruyềnsứcchứavàohàmdựngArrayList:ArrayListstaff=newArrayList(100);CAUTIONXácđịnh1arraylist:newArrayList(100)//sứcchứalà100khôngcócùngphânphốivới1mảngmớinhư:newEmployee[100]//sizelà100Cósựkhácnhauquantrọnggiữasứcchứacủa1arraylistvàcỡcủamảng.Nếubạnphânphối1mảngvới100entriesthìmảngcó100slots,sẵnsàngchoviệcsửdụng.Arraylistvớisứcchứa100elementscótiềmnănggiữ100elements(vàthựcranhiềuhơn100),nhưngkhibắtđầu,thậmchísaukhikhởitạo,arraylistkhôngnắmgiữelementsnàocả.Methodsizetrảvềsốcảelementsthựctrongarraylist.Vídụ:staff.size();trảvềsốcácelementshiệntạitrongarrayliststaff.Đâylàtươngtựvớimảnga:a.length1lầnbạnchắcchắnrằngarraylistlàcốđịnh,bạncóthểgọimethodtrimToSize.Methodnàyđiềuchỉnhcỡcủabộnhớđểsửdụngđểsửdụng1cáchchínhxácđểc ...

Tài liệu được xem nhiều: