銆銆鐩墠Commons Proper涓湁33涓」鐩紝Commons Sandbox涓湁22涓」鐩紝鏁呰岋紝浠諱綍涓綾籎ava欏圭洰閮芥湁鍏跺瓨鍦ㄧ殑鎰忎箟銆?br />銆銆Lang緇勪歡鏄疛akarta Commons涓緝涓烘祦琛岀殑緇勪歡涔嬩竴銆侺ang鏄鍛堢幇鍦↗2SE鏈韓涓殑涓緇勭被銆? 銆銆鍙湁褰撳瘑閽ユ弧瓚蟲墍鏈夎繖浜涙潯浠舵椂錛屽簲鐢ㄧ▼搴忔墠浼氭煡璇㈡暟鎹簱錛屾鏌ヨ瀵嗛挜鏄惁鍚堟硶銆? 緇撴潫璇?/strong> 銆銆Harshad Oak鏄疛ava J2EE闂ㄦ埛緗戠珯IndicThreads.com鐨勫垱濮嬩漢銆備粬緙栧啓浜哖ro Jakarta Commons鍜孫racle JDeveloper 10g:Empowering J2EE Development錛屽茍涓庝漢鍚堣憲浜咼ava 2 Enterprise Edition 1.4 Bible銆備粬榪樻槸Rightrix Solutions鐨勫垱濮嬩漢銆? 鍘熸枃鍑哄
銆銆鍦ㄦ湰鏂囦腑錛屾垜浠皢浜嗚ВLang鏈鏈夌敤鐨勪竴浜涘姛鑳姐傝娉ㄦ剰鐨勬槸錛屼篃鍙互鍙嬌鐢ㄥ熀鏈琂ava綾繪潵瀹屾垚Lang鐨勬瘡涓姛鑳斤紝浣嗙浉瀵逛簬鑷繁瀛︿範銆佺悊瑙e茍緙栧啓浠g爜鑰岃█錛屼嬌鐢↙ang瑕佺畝鍗曞緱澶氥傚嵆浣挎偍鑳藉鍐欏嚭鏈濂界殑浠g爜錛屼嬌鐢ㄧ粡榪囧疄楠屽拰嫻嬭瘯鐨凩ang鐨勫姛鑳戒細鏇村揩涓浜涳紝鑳借妭鐪佸ぇ閲忕殑媯鏌ヤ笌嫻嬭瘯鏃墮棿銆傞殢鐫Lang涓璧鋒彁渚涗簡鐗規湁鐨凧Unit嫻嬭瘯鐢ㄤ緥錛孡ang鐨勪嬌鐢ㄦ瀬鍏跺箍娉涳紝宸茬粡鍘嗕簡鍏跺垱寤鴻呭拰鐜板疄涓栫晫鐨勭縐嶈冮獙銆?br />銆銆Lang鐨勪竴涓噸瑕佺壒寰佹槸鍏剁畝鍗曟с傞氬父鏉ヨ錛屾柊鐨凧ava緇勪歡鍗佸垎澶嶆潅錛岃浜嗚В鑻ュ共縐嶆妧鏈墠鑳戒嬌鐢ㄨ繖浜涚粍浠躲傝鐞嗚В緇勪歡鐨勭敤閫旈氬父閮藉緢闅撅紝鏇村埆璇村疄闄呬嬌鐢ㄨ緇勪歡浜嗐備絾瀵逛簬澶у鏁癈ommons緇勪歡鑰岃█錛岃繖灝變笉鏄棶棰樹簡銆侺ang涓綾葷粍浠朵嬌鐢ㄦ柟渚匡紝鏃犺瀵笿ava鍒濆鑰呰繕鏄珮綰ava鐢ㄦ埛閮介潪甯告湁鐢ㄣ?br />銆銆濡傛灉鍦ㄩ噰鐢ㄦ妧鏈墠闇瑕佹湁鍗佽凍鐨勪繚璇侊紝鍒欒鍦ㄤ繚瀛樻偍鐨凧ava杞歡鐨勭洰褰曚腑鎼滅儲commons-lang*.jar銆傜粨鏋滀細璁╂偍鎰熷埌寰堟剰澶栥?Tomcat銆?a target="_blank">Struts銆?a target="_blank">Hibernate銆?a target="_blank">Spring鍜?a target="_blank">WebWork 絳夊父瑙丣ava欏圭洰閮戒嬌鐢↙ang銆?br />銆銆棣栧厛璁╂垜浠湅涓鐪嬩嬌鐢↙ang榪涜澶у鏁板紑鍙戜漢鍛樺嚑涔庢瘡澶╁繀欏昏繘琛岀殑鎿嶄綔鈥斺斿瓧絎︿覆鎿嶄綔銆?
澶勭悊瀛楃涓?/strong>
銆銆鏃犺搴旂敤紼嬪簭鏄熀浜嶴wing銆丣2EE鎴朖2ME鐨勶紝瀹冮兘蹇呴』浣跨敤瀛楃涓層傛墍浠ワ紝灝界鍦↗ava涓嬌鐢ㄥ瓧絎︿覆鐩稿綋綆鍗曪紝浣嗘槸濡傛灉甯屾湜鎸夌収涓瀹氱殑鏉′歡淇敼鍜屽鐞嗗瓧絎︿覆錛屼簨鎯呭氨涓嶉偅涔堢畝鍗曚簡銆傛偍涓嶅緱涓嶅湪鍚勭涓庡瓧絎︿覆鐩稿叧鐨勭被涓鎵懼悇縐嶄笉甯哥敤鐨勬柟娉曪紝鐒跺悗鎯沖姙娉曚嬌鍏跺崗鍚屽伐浣滐紝浠ヨ幏寰楁墍闇鐨勭粨鏋溿傝櫧鐒舵湁浜汱ang鏂規硶涓嶫2SE涓殑鏌愪簺鏂規硶閲嶅彔錛屼絾鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝涓涓狶ang鏂規硶灝卞彲鎻愪緵鍚勭綾諱腑鐨勫涓狫2SE鏂規硶鐨勫姛鑳斤紝浠庤屽府鍔╂偍鑾峰緱鎵闇鐨勮緭鍑恒?
銆銆Lang緇勪歡鏈夎澶氫笓闂ㄧ敤浜庡瓧絎︿覆鎿嶄綔鐨勭被銆傜幇鍦ㄦ垜浠皢浣跨敤涓涓畝鍗曠殑Java搴旂敤紼嬪簭鏉ユ紨紺轟竴浜涜緝涓烘湁鐢ㄧ殑綾誨拰鏂規硶銆?
銆銆褰撳簲鐢ㄧ▼搴忔帴鍙楃敤鎴瘋緭鍏ユ椂錛岀敱浜庣敤鎴峰彲鑳戒細瀛樺湪杈撳叆閿欒鐨勬儏鍐碉紝鎴栫敤鎴峰彲鑳戒互鍚勭鏍煎紡杈撳叆鏁版嵁錛岃屾偍甯屾湜鍙噰鐢ㄤ竴縐嶆牸寮忚繘琛屽鐞嗗拰瀛樺偍錛屽垯閫氬父浼氭秹鍙婂埌瀵瑰瓧絎︿覆榪涜鎿嶄綔銆?
銆銆渚嬪錛屾偍鏈変竴涓甫杈撳叆妗嗙殑紿椾綋錛岀敤鎴峰湪姝よ緭鍏ユ鍐呰緭鍏ヨ鍙瘉瀵嗛挜銆傛偍甯屾湜鍏佽杈撳叆1111-JAVA鏍煎紡鐨勫瘑閽ャ傛偍蹇呴』榪涜浠ヤ笅鎿嶄綔錛?/p>
銆銆濡傛灉涓嶈姳澶ч噺鐨勬椂闂存祻瑙圫tring銆丼tringTokenizer鍜屽叾浠栫被鐨凙PI鏂囨。錛屾偍鑳藉畬鎴愪互涓婄殑浠誨姟涔堬紵鎴戜笉鑳斤紝鎵浠ョ幇鍦ㄦ垜灝嗚瘯鐫鐢↙ang緇勪歡鏉ョ鐞嗛獙璇併?br />娓呭崟1. checkLicenseKey()鏂規硶/**
* Check if the key is valid
* @param key license key value
* @return true if key is valid, false otherwise.
*/
public static boolean checkLicenseKey(String key){
//checks if empty or null
if(StringUtils.isBlank(key)){
return false;
}
//delete all white space
key= StringUtils.deleteWhitespace(key);
//Split String using the - separator
String[] keySplit = StringUtils.split(key, "-");
//check lengths of whole and parts
if(keySplit.length != 2
|| keySplit[0].length() != 4
|| keySplit[1].length() != 4) {
return false;
}
//Check if first part is numeric
if(!StringUtils.isNumeric(keySplit[0])){
return false;
}
//Check if second part contains only
//the four characters 'J', 'A', 'V' and 'A'
if(! StringUtils.containsOnly(keySplit[1]
,new char[]{'J', 'A', 'V', 'A'})){
return false;
}
//Check if the fourth character
//in the first part is a '0'
if(StringUtils.indexOf(keySplit[0], '0') != 3){
return false;
}
//If all conditions are fulfilled, key is valid.
return true;
}
銆銆鍦ㄦ竻鍗?涓紝鎴戜滑浣跨敤浜唎rg.apache.commons.lang.StringUtils綾諱腑鎻愪緵鐨勫悇縐嶆柟娉曪紝鏍規嵁鎴戜滑鍏堝墠瀹氫箟鐨勬墍鏈夎鍒欏瀛楃涓茶繘琛岄獙璇併俰sBlank()鏂規硶媯鏌ュ瓧絎︿覆鏄惁涓虹┖銆俤eleteWhitespace()鏂規硶紜繚瀛楃涓蹭笉鍖呭惈絀烘牸銆傜劧鍚庢垜浠嬌鐢╯plit()鏂規硶瀵瑰瓧絎︿覆榪涜鍒嗛殧錛屽茍浣跨敤isNumeric()銆乧ontainsOnly()鍜宨ndexOf()鏂規硶瀵瑰瘑閽ョ殑涓ら儴鍒嗚繘琛岄獙璇併?br />銆銆璇鋒敞鎰忥紝灝界鍦↗2SE涓凡緇忔湁浜唅ndexOf()鏂規硶錛屾渶濂戒嬌鐢⊿tringUtils涓殑indexOf()銆備笌J2SE indexOf()鏂規硶涓嶅悓錛屼嬌鐢⊿tringUtils indexOf()鏃舵棤闇鎷呭績絀烘寚閽堢殑闂銆傝Е鍙慛ullPointerException琚涓烘槸Java紼嬪簭鍛樻渶甯哥姱鐨勯敊璇侺ang鍙互紜繚鎮ㄤ笉浼氱姱鍚屾牱鐨勯敊璇傚嵆浣垮悜indexOf()鎴栧叾浠栨綾繪柟娉曚紶閫掍竴涓猲ull錛岄兘涓嶄細寮曞彂NullPointerException銆俰ndexOf()灝嗙洿鎺ヨ繑鍥?1銆?br />銆銆榪欐牱錛屽彧闇鍑犺綆鍗曚唬鐮侊紝灝卞彲浠ュ疄鐜扮浉搴旂殑鍔熻兘錛岃岄噰鐢ㄥ叾浠栨柟娉曢渶瑕佺紪鍐欏緢澶氳浠g爜錛岃屼笖鍗佸垎楹葷儲銆傚鏋滀嬌鐢ㄦ竻鍗?涓墍紺虹殑涓繪柟娉曟墽琛宑heckLicenseKey()鏂規硶錛屾墍寰楀埌鐨勭粨鏋滃娓呭崟3鎵紺恒?br />
娓呭崟2. main()鏂規硶public static void main(String[] args) {
String []key= {"1210-JVAJ","1211-JVAJ", "210-JVAJ", "1210-ZVAJ"};
for (int i=0; i < key.length; i++){
if(checkLicenseKey(key[i])){
System.out.println(key[i]+ " >> Is Valid");
}
else{
System.out.println(key[i]+ " >> Is InValid");
}
}
}
娓呭崟3. 杈撳嚭1210-JVAJ >> Is Valid
1211-JVAJ >> Is InValid
210-JVAJ >> Is InValid
1210-ZVAJ >> Is InValid
銆銆澶ч儴鍒嗙敤浜庤繘琛屽瓧絎︿覆鎿嶄綔鐨勬柟娉曢兘闅跺睘浜巓rg.apache.commons.lang.StringUtils錛屼絾涔熸湁鍏朵粬鐨勭被鍙互浣跨敤銆侰harUtils鍜孋harSetUtils鍒嗗埆鎻愪緵浣跨敤瀛楃鍜屽瓧絎﹂泦鐨勫疄鐢ㄦ柟娉曘俉ordUtils鏄湪2.0鐗堜腑棣栨鍑虹幇鐨勭被錛岀敤浜庢壙杞戒笓闂ㄧ敤浜庡鐞嗗瓧鐨勫疄鐢ㄦ柟娉曘備笉榪囷紝鐢變簬瀛楃涓插拰瀛楃殑澶勭悊涓婃湁澶ч噺鐨勯噸鍙犳搷浣滐紝浣垮緱姝ょ被浼間箮鏈夌偣娌℃湁瀛樺湪鐨勫繀瑕佷簡銆俁andomStringUtils綾誨彲浠ユ牴鎹悇縐嶈鍒欑敓鎴愰殢鏈哄瓧絎︿覆銆?
銆銆鐜板湪錛岃鎴戜滑浜嗚В涓涓婰ang鐨勫彟涓涓湁鐢ㄧ殑鏂歸潰錛氬鐞嗘棩鏈熷拰鏃墮棿鐨勮兘鍔涖?br />
鏃墮棿鎶鏈?/strong>
銆銆鍦↗ava涓鐞嗘棩鏈熷拰鏃墮棿鏄竴浠剁浉褰撴鎵嬬殑浜嬨傚鏋滆浣跨敤java.text.SimpleDateFormat銆乯ava.util.Calendar銆乯ava.util.Date絳夌被錛岄渶瑕佷竴瀹氭椂闂存潵閫傚簲錛岃繕闇瑕佸姣忎竴涓秹鍙婂埌鐨勭被鍜屾帴鍙i潪甯鎬簡瑙o紝鎵嶈兘欏哄埄鍦板鐞嗘棩鏈熷拰鏃墮棿銆?
銆銆Lang緇勪歡褰誨簳鍦扮畝鍖栦簡鏃ユ湡鐨勫鐞嗭紝騫跺彲瀵瑰叾榪涜鏍煎紡鍖栥傛偍鍙互杞繪澗鍦版牸寮忓寲鏃ユ湡浠ヨ繘琛屾樉紺恒佹瘮杈冩棩鏈熴佽垗鍏ユ垨鎴柇鏃ユ湡錛岀敋鑷寵兘鑾峰彇鐗瑰畾鑼冨洿鍐呯殑鎵鏈夋棩鏈熴?
娓呭崟4. 澶勭悊鏃ユ湡鍜屾椂闂?/strong>public static void main(String[] args)
throws InterruptedException, ParseException {
//date1 created
Date date1= new Date();
//Print the date and time at this instant
System.out.println("The time right now is >>"+date1);
//Thread sleep for 1000 ms
Thread.currentThread().sleep(DateUtils.MILLIS_IN_SECOND);
//date2 created.
Date date2= new Date();
//Check if date1 and date2 have the same day
System.out.println("Is Same Day >> "
+ DateUtils.isSameDay(date1, date2));
//Check if date1 and date2 have the same instance
System.out.println("Is Same Instant >> "
+DateUtils.isSameInstant(date1, date2));
//Round the hour
System.out.println("Date after rounding >>"
+DateUtils.round(date1, Calendar.HOUR));
//Truncate the hour
System.out.println("Date after truncation >>"
+DateUtils.truncate(date1, Calendar.HOUR));
//Three dates in three different formats
String [] dates={"2005.03.24 11:03:26", "2005-03-24 11:03",
"2005/03/24"};
//Iterate over dates and parse strings to java.util.Date objects
for(int i=0; i < dates.length; i++){
Date parsedDate= DateUtils.parseDate(dates[i],
new String []{"yyyy/MM/dd", "yyyy.MM.dd HH:mm:ss",
"yyyy-MM-dd HH:mm"});
System.out.println("Parsed Date is >>"+parsedDate);
}
//Display date in HH:mm:ss format
System.out.println("Now >>"
+DateFormatUtils.ISO_TIME_NO_T_FORMAT.format
(System.currentTimeMillis()));
}
銆銆娓呭崟4婕旂ず浜唎rg.apache.commons.lang.DateUtils鍜宱rg.apache.commons.lang.DateFormatStringUtils綾葷殑閮ㄥ垎鍔熻兘銆傝繕鏈夊叾浠栬澶氭柟娉曞彲浠ヨ繘琛屽悓鏍風殑鎿嶄綔錛屼絾杈撳叆鏍煎紡涓嶅悓銆傛晠鑰岋紝濡傛灉涓囦竴鎮ㄥ繀欏誨垎鏋愬拰鏍煎紡鍖栦竴涓棩鏈熷鹼紝鍙渶瑕佸熷姪鎻愪緵鐨勬柟娉曚箣涓錛屽埄鐢ㄤ竴琛屼唬鐮佸氨鍙互瀹炵幇浜嗐?
銆銆鎵ц娓呭崟4涓唬鐮佸悗鐨勮緭鍏ュ娓呭崟5鎵紺恒?br />
娓呭崟5. 杈撳嚭The time right now is >>Sat Apr 09 14:40:41 GMT+05:30 2005
Is Same Day >> true
Is Same Instant >> false
Date after rounding >>Sat Apr 09 15:00:00 GMT+05:30 2005
Date after truncation >>Sat Apr 09 14:00:00 GMT+05:30 2005
Parsed Date is >>Thu Mar 24 11:03:26 GMT+05:30 2005
Parsed Date is >>Thu Mar 24 11:03:00 GMT+05:30 2005
Parsed Date is >>Thu Mar 24 00:00:00 GMT+05:30 2005
Now >>14:40:43
銆銆鍦ㄦ竻鍗?涓紝鎴戜滑鍒涘緩浜嗕袱涓棩鏈燂紝榪欎袱涓棩鏈熶粎鏈変竴縐掔殑宸埆銆傜劧鍚庝嬌鐢╥sSameInstant()鍜宨sSameDay()鏂規硶媯鏌ヨ繖涓や釜鏃ユ湡鏄惁鐩稿悓銆傛帴涓嬫潵灝嗘棩鏈熻繘琛岃垗鍏ュ拰鎴柇錛岀劧鍚庝嬌鐢ㄥ湪鏁扮粍涓寚瀹氱殑鍚勭鏍煎紡瀵圭壒孌婃棩鏈熺敤渚嬭繘琛岃В鏋愩?br />銆銆灝嗘偍鐨勫簲鐢ㄧ▼搴忛泦鎴愬埌絎笁鏂瑰簲鐢ㄧ▼搴忔椂錛岀粡甯鎬笉鑳藉畬鍏ㄧ‘瀹氳緭鍏ョ殑鏍煎紡銆傛垜鏇劇粡鍋氳繃涓涓鏃х増搴旂敤紼嬪簭鐨勯泦鎴愶紝瀵逛簬姣忎釜闂錛岃搴旂敤紼嬪簭浼間箮鎬繪槸鏈変笁涓瓟妗堛傛墍浠ワ紝濡傛灉蹇呴』瀵規綾誨簲鐢ㄧ▼搴忔彁渚涚殑鏃ユ湡榪涜瑙f瀽錛屾偍闇瑕佹彁渚涗笁涓拰鍥涗釜涓嶅悓鐨勬棩鏈熸牸寮忋傛竻鍗?涓嬌鐢╬arseDate()鏂規硶灝辨槸涓轟簡瀹屾垚榪欓」浠誨姟銆傝繖鏍鳳紝鍗充嬌杈撳叆鏈夊彉鍖栵紝浠嶇劧鑳芥洿瀵規棩鏈熻繘琛岃В鏋愩傝繕瑕佹敞鎰忥紝鏁扮粍鍐呮ā寮忕殑欏哄簭涓庤緭鍏ョ殑欏哄簭騫朵笉鐩稿悓錛屼絾璇ユ柟娉曚粛鐒舵壘鍒頒簡閫傚綋鐨勬ā寮忥紝騫舵嵁姝よ繘琛岃В鏋愩?br />銆銆鏈鍚庯紝鎴戜滑鎸夌収ISO_TIME_NO_T_FORMAT鏍煎紡錛圚H:mm:ss錛夊鏃ユ湡榪涜鏍煎紡鍖栧茍鎵撳嵃杈撳叆銆傜幇鍦ㄦ垜浠皢浜嗚В浣跨敤Lang鐢熸垚甯哥敤鏂規硶toString()銆?br />
鐢熸垚toString()鏂規硶
銆銆緇忓父瑕佺敤鍒癳quals()銆乼oString()鍜宧ashCode()鏂規硶銆備笉榪囷紝璋堝埌瀹為檯緙栧啓榪欎簺鏂規硶鐨勫疄鐜版椂錛屼笉浠呮垜浠ぇ澶氭暟浜轟笉鎰挎剰榪欐牱鍋氾紝鑰屼笖鎴戜滑涔熶笉鑳界‘瀹氬浣曞噯紜畝鍗曞湴緙栧啓榪欎簺鏂規硶銆傜敓鎴愬櫒紼嬪簭鍖呮彁渚涗簡涓浜涘疄鐢ㄧ被錛屽彲浠ュ府鍔╂偍鏂逛究鍦板垱寤鴻繖浜涙柟娉曠殑瀹炵幇銆傚ぇ澶氭暟鎯呭喌涓嬶紝鍙渶瑕佷竴琛屼唬鐮佸嵆鍙備笅闈㈡垜浠皢浜嗚ВLang鐨則oString鍔熻兘銆?br />
toString()鏂規硶
銆銆鎮ㄥ彲鑳芥病鏈夋敞鎰忓埌錛屽湪娓呭崟4涓紝鍗充嬌鎴戜滑鍚慡ystem.out.println()浼犻掍竴涓猨ava.util.Date瀵硅薄錛屾墍鑾峰緱鐨勮緭鍑轟粛鐒舵槸姝g‘鐨勬棩鏈熷拰鏃墮棿鏄劇ず銆備紶閫掑璞″紩鐢ㄦ椂錛屽皢鑷姩璋冪敤toString()鏂規硶錛屾墍浠ュ彲浠ュ疄鐜拌繖涓鐐廣傞偅涔堬紝鍦ㄦ垜浠殑紺轟緥涓疄闄呬笂璋冪敤浜唈ava.util.Date綾葷殑toString()鏂規硶錛屾垜浠兘澶熷緱鍒版紜殑杈撳嚭鏄洜涓烘湁浜洪噸鍐欎簡java.util.Date綾諱腑鐨刯ava.lang.Object綾葷殑toString()鏂規硶銆?
銆銆濡傛灉娌℃湁閲嶅啓toString()鏂規硶錛屽垯鑾峰緱鐨勮緭鍑哄彧鏄被鍚嶇О鍜宧ashcode鐨勫悕縐般傚皢涓嶄細鏄劇ず綾諱腑鐨勪換浣曟暟鎹傛墍浠ワ紝濡傛灉緙栧啓浜嗕竴涓柊綾伙紝涓斿笇鏈涜兘寰楀埌姝g‘鐨勬墦鍗拌緭鍑猴紝鍒欓渶瑕侀噸鍐欒綾諱腑鐨則oString()鏂規硶銆?
娓呭崟6. toString()鏂規硶public class Computer {
String processor;
String color;
int cost;
/** Creates a new instance of Computer */
public Computer(String processor, String color, int cost) {
this.processor=processor;
this.color=color;
this.cost=cost;
}
public static void main(String[] args) {
Computer myComp=new Computer("Pentium","black",1000);
System.out.println(myComp);
}
public String toString(){
return ToStringBuilder.reflectionToString(this);
/*
return ToStringBuilder.reflectionToString(this
, ToStringStyle.SHORT_PREFIX_STYLE);
return ToStringBuilder.reflectionToString(this
, ToStringStyle.MULTI_LINE_STYLE);
return new ToStringBuilder(this)
.append("processor", processor).toString();
*/
}
}
銆銆娓呭崟6婕旂ず浜嗗叿鏈変笁涓瓧孌電殑Computer綾匯傚叾涓煎緱鍏蟲敞鐨勬槸toString()鏂規硶銆傝皟鐢╮eflectionToString()鏂規硶鍙互鍒ゆ柇鍝簺鏄被涓殑瀛楁錛岀劧鍚庢墦鍗板叾鍚嶇О鍜屽箋俶ain()鏂規硶涓紝鎴戜滑鍙垱寤轟簡璇ョ被鐨勪竴涓疄渚嬶紝鐒跺悗灝嗗叾鎵撳嵃鍑烘潵銆傝綾葷殑杈撳嚭涓篸ev2dev.Computer@f6a746[processor=Pentium,color=black,cost=1000]銆?br />銆銆鍥犺岋紝濡傛灉涓嶅笇鏈涜姳澶綺懼姏錛屼絾鍙堥渶瑕佹偍鐨勭被鏈塼oString()瀹炵幇錛屾渶綆鍗曠殑鏂規硶鑾繃浜庡皢榪欎袱琛屼唬鐮佸鍒跺茍綺樿創鍒版偍鐨勬墍鏈夌被涓傚鏋滃笇鏈涙洿濂藉湴鎺у埗鐢熸垚鐨勭粨鏋滐紝璇峰弬瑙佹敞閲婁腑鎻愬埌鐨勯夐」銆傞氳繃鍒涘緩ToStringBuilder鐨勬柊瀹炰緥錛屽彲浠ュ杈撳嚭搴旂敤鍚勭鏍峰紡錛岀敋鑷崇敓鎴愬叏閮ㄨ緭鍑恒傚鏋滄寜鐓у垪鍑虹殑欏哄簭鎵ц浜嗗叏閮ㄥ洓涓繑鍥炶鍙ワ紝鍒欒緭鍑哄娓呭崟7鎵紺恒?br />
娓呭崟7. 鍩轟簬ToStringBuilder鏂規硶鐨勫洓涓彲鑳借緭鍑?/strong>1) dev2dev.Computer@f6a746[processor=Pentium,color=black,cost=1000]
2) Computer[processor=Pentium,color=black,cost=1000]
3) dev2dev.Computer@f6a746[
processor=Pentium
color=black
cost=1000
]
4) dev2dev.Computer@192d342[processor=Pentium]
瀵硅薄姣旇緝涓庢帓搴?/strong>
銆銆緇忓父闇瑕佸鏁版嵁瀵硅薄榪涜姣旇緝錛屽茍鎹榪涜鎺掑簭銆傞偅涔堟垜浠浣曞娓呭崟6涓墍緇欏嚭鐨凜omputer綾葷殑瀵硅薄榪涜姣旇緝鍜屾帓搴忓憿錛?
銆銆鎮ㄧ寽鐚滐紒璁╂垜浠嬌鐢↙ang鏍規嵁璁$畻鏈虹殑鎴愭湰瀵笴omputer瀵硅薄榪涜鎺掑簭銆傝嫢瑕佹瘮杈冨璞★紝闇瑕佸疄鐜癹ava.lang.Comparable鎺ュ彛銆傛鎺ュ彛鍏鋒湁鎯熶竴鐨勬柟娉昪ompareTo(Object)銆傛鏂規硶瀹炵幇灝嗗綋鍓嶅璞″拰浼犻掔粰姝ゆ柟娉曠殑瀵硅薄榪涜姣旇緝銆傚鏋滄瀵硅薄灝忎簬銆佺瓑浜庢垨澶т簬鎸囧畾鐨勫璞★紝姝ゆ柟娉曞皢鍒嗗埆榪斿洖璐熸暟銆侀浂鎴栨鏁般?
銆銆涓轟簡瀵笴omputer瀵硅薄榪涜姣旇緝錛屽湪Computer綾諱腑瀹炵幇compareTo() 鏂規硶錛屽娓呭崟8鎵紺恒?br />
娓呭崟8. compareTo()鏂規硶public int compareTo(Object obj) {
Computer anotherComputer = (Computer)obj;
//return new CompareToBuilder().reflectionCompare
(this, anotherComputer);
return new CompareToBuilder().
append(this.cost, anotherComputer.cost).toComparison();
}
銆銆鐒跺悗錛屼負浜嗗疄闄呰繘琛屾瘮杈冿紝鎴戜滑緙栧啓涓涓悕涓篊omputerSor鐨勭畝鍗曠被錛屽娓呭崟9涓墍紺恒傛垜浠彧鍚慉rrayList娣誨姞涓変釜瀵硅薄錛岀劧鍚庤繘琛屾帓搴忋?br />
娓呭崟9. ComputerSort綾?/strong>public class ComputerSort {
public static void main(String[] args) {
ArrayList computerList = new ArrayList();
computerList.add(new Computer("Pentium","black", 1000));
computerList.add(new Computer("Pentium","chocolate", 334));
computerList.add(new Computer("Pentium","darkgray", 2234));
Collections.sort(computerList);
System.out.println(computerList);
}
}
銆銆鎵цComputerSort鏃訛紝灝嗙湅鍒板璞℃牴鎹甤ost瀛楁鐨勫艱繘琛屼簡鎺掑簭銆侰ompareToBuilder涓嶵oStringBuilder綾諱技錛屼篃鏈変竴涓熀浜庡弽灝勭殑鐢ㄦ硶閫夐」銆傛垜浠凡瀵規竻鍗?涓殑compareTo()鏂規硶涓殑浣嶅厓榪涜浜嗘敞閲婏紝鍥犱負錛屽湪姝ょ鎯呭喌涓嬶紝鍙嶅皠閫夐」灝嗘瘮杈冩墍鏈夊瓧孌碉紝鏈緇堣幏寰椾笉姝g‘鐨勭粨鏋溿傚鏋滄棦涓嶅笇鏈涙瘮杈冨綋鍓嶇被涓殑瀛楁錛屼篃涓嶅笇鏈涙瘮杈冨叾瓚呯被涓殑瀛楁錛孋ompareToBuilder涔熸彁渚涗簡鍙互鐢ㄤ簬姝ょ敤閫旂殑鏂規硶銆傛墽琛孋omputerSort綾葷殑杈撳嚭濡傛竻鍗?0涓墍紺恒?br />
娓呭崟10. 鎺掑簭鍚庣殑Computer瀵硅薄[dev2dev.Computer@cf2c80[processor=Pentium,color=chocolate,cost=334]
, dev2dev.Computer@12dacd1[processor=Pentium,color=black,cost=1000]
, dev2dev.Computer@1ad086a[processor=Pentium,color=darkgray,cost=2234]]
銆銆鏈枃涓紝鎴戜滑浜嗚В浜咼akarta Commons Lang緇勪歡鐨勪竴浜涗富瑕佸姛鑳姐傛葷殑璇存潵錛孋ommons欏圭洰鏄潪甯告湁鐢ㄧ殑欏圭洰錛屼絾騫舵病鏈夊緱鍒板厖鍒嗗埄鐢ㄣ傝櫧鐒跺紑婧愰」鐩嬌鐢ㄤ簡璁稿Commons緇勪歡錛屼絾鍏跺湪寮婧愪笘鐣屼箣澶栫殑搴旂敤騫朵笉鍗佸垎騫挎硾銆傜幇鍦ㄦ偍宸茬粡瀵筁ang鐨勫姛鑳芥湁鎵浜嗚В錛屽簲璇ヨ冭檻绔嬪嵆灝嗗叾搴旂敤鍒版偍鐨勫簲鐢ㄧ▼搴忎腑銆傚彟澶栵紝榪樺彲浠ュ湪Commons欏圭洰涓鎵懼悇縐嶆湁鐢ㄧ殑緇勪歡錛屼粠鑰岀畝鍖朮ML瑙f瀽銆佷嬌搴旂敤紼嬪簭榪涜HTTP浼氳瘽銆佸疄鐜扮郴緇熷寲楠岃瘉浠ュ強鎵ц寰堝鍏朵粬鍔熻兘銆?br />
涓嬭澆
銆銆涓嬭澆鏈枃涓敤鍒扮殑浠g爜錛?a >examples.zip (3KB)
鍙傝冭祫鏂?/strong>
http://dev2dev.bea.com/pub/a/2005/04/commons_lang.html